@@ -35,9 +35,10 @@ def is_cloudwatch_trigger(event):
3535
3636
3737def is_cloudwatch_logs_trigger (event ):
38- if "awslogs" in event and event [ "awslogs" ] != None :
38+ if hasattr ( event , 'get' ) and event . get ( "awslogs" , False ) is not False :
3939 return True
40- return False
40+ else :
41+ return False
4142
4243
4344def is_s3_trigger (event ):
@@ -61,19 +62,26 @@ def read_http_query_params(event):
6162 @param event: lambda event dict
6263 @return: String in the form of "a=b&c=d"
6364 """
64- if event is None or type (event ) is not dict :
65- return ""
66-
6765 params = []
68- if 'multiValueQueryStringParameters' in event and event ['multiValueQueryStringParameters' ] is not None :
69- for key in event ['multiValueQueryStringParameters' ]:
70- params .append ("%s=%s" % (key , event ['multiValueQueryStringParameters' ][key ]))
71- return "&" .join (params )
72- elif 'queryStringParameters' in event and event ['queryStringParameters' ] is not None :
73- for key in event ['queryStringParameters' ]:
74- params .append ("%s=%s" % (key , event ['queryStringParameters' ][key ]))
75- return "&" .join (params )
76- else :
66+ try :
67+ if event is None or type (event ) is not dict :
68+ return ""
69+
70+ mvqsp = event .get ('multiValueQueryStringParameters' , None )
71+ qsp = event .get ('queryStringParameters' , None )
72+
73+ if mvqsp is not None and type (mvqsp ) is dict :
74+ for key in mvqsp :
75+ params .append ("%s=%s" % (key , mvqsp [key ]))
76+ return "&" .join (params )
77+ elif qsp is not None and type (qsp ) is dict :
78+ for key in qsp :
79+ params .append ("%s=%s" % (key , qsp [key ]))
80+ return "&" .join (params )
81+ else :
82+ return ""
83+ except :
84+ logger .debug ("read_http_query_params: " , exc_info = True )
7785 return ""
7886
7987
@@ -87,10 +95,16 @@ def capture_extra_headers(event, span, extra_headers):
8795 @param extra_headers: a list of http headers to capture
8896 @return: None
8997 """
90- for custom_header in extra_headers :
91- for key in event ["headers" ]:
92- if key .lower () == custom_header .lower ():
93- span .set_tag ("http.%s" % custom_header , event ["headers" ][key ])
98+ try :
99+ event_headers = event .get ("headers" , None )
100+
101+ if event_headers is not None :
102+ for custom_header in extra_headers :
103+ for key in event_headers :
104+ if key .lower () == custom_header .lower ():
105+ span .set_tag ("http.%s" % custom_header , event_headers [key ])
106+ except :
107+ logger .debug ("capture_extra_headers: " , exc_info = True )
94108
95109
96110def enrich_lambda_span (agent , span , event , context ):
@@ -109,6 +123,10 @@ def enrich_lambda_span(agent, span, event, context):
109123 span .set_tag ('lambda.name' , context .function_name )
110124 span .set_tag ('lambda.version' , context .function_version )
111125
126+ if event is None or type (event ) is not dict :
127+ logger .debug ("enrich_lambda_span: bad event %s" , type (event ))
128+ return
129+
112130 if is_api_gateway_proxy_trigger (event ):
113131 span .set_tag ('lambda.trigger' , 'aws:api.gateway' )
114132 span .set_tag ('http.method' , event ["httpMethod" ])
@@ -204,6 +222,5 @@ def enrich_lambda_span(agent, span, event, context):
204222 for item in event ["Records" ][:3 ]:
205223 events .append ({'queue' : item ['eventSourceARN' ]})
206224 span .set_tag ('lambda.sqs.messages' , events )
207-
208225 except :
209226 logger .debug ("enrich_lambda_span: " , exc_info = True )
0 commit comments