Skip to content

Commit eb4b13b

Browse files
author
Peter Giacomo Lombardo
authored
Improved Lambda Trigger Handling (#281)
* AWS Lambda: Avoid setting arbitrary context * Do not double trace the boto3 exit * Debug log which trigger is detected; linter cleanup
1 parent ddc2797 commit eb4b13b

File tree

1 file changed

+21
-9
lines changed

1 file changed

+21
-9
lines changed

instana/instrumentation/aws/triggers.py

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88

99
from ...log import logger
1010

11+
STR_LAMBDA_TRIGGER = 'lambda.trigger'
12+
1113

1214
def get_context(tracer, event):
1315
# TODO: Search for more types of trigger context
@@ -83,7 +85,7 @@ def read_http_query_params(event):
8385
return "&".join(params)
8486
else:
8587
return ""
86-
except:
88+
except Exception:
8789
logger.debug("read_http_query_params: ", exc_info=True)
8890
return ""
8991

@@ -106,7 +108,7 @@ def capture_extra_headers(event, span, extra_headers):
106108
for key in event_headers:
107109
if key.lower() == custom_header.lower():
108110
span.set_tag("http.%s" % custom_header, event_headers[key])
109-
except:
111+
except Exception:
110112
logger.debug("capture_extra_headers: ", exc_info=True)
111113

112114

@@ -131,7 +133,8 @@ def enrich_lambda_span(agent, span, event, context):
131133
return
132134

133135
if is_api_gateway_proxy_trigger(event):
134-
span.set_tag('lambda.trigger', 'aws:api.gateway')
136+
logger.debug("Detected as API Gateway Proxy Trigger")
137+
span.set_tag(STR_LAMBDA_TRIGGER, 'aws:api.gateway')
135138
span.set_tag('http.method', event["httpMethod"])
136139
span.set_tag('http.url', event["path"])
137140
span.set_tag('http.path_tpl', event["resource"])
@@ -141,7 +144,8 @@ def enrich_lambda_span(agent, span, event, context):
141144
capture_extra_headers(event, span, agent.options.extra_http_headers)
142145

143146
elif is_application_load_balancer_trigger(event):
144-
span.set_tag('lambda.trigger', 'aws:application.load.balancer')
147+
logger.debug("Detected as Application Load Balancer Trigger")
148+
span.set_tag(STR_LAMBDA_TRIGGER, 'aws:application.load.balancer')
145149
span.set_tag('http.method', event["httpMethod"])
146150
span.set_tag('http.url', event["path"])
147151
span.set_tag('http.params', read_http_query_params(event))
@@ -150,7 +154,8 @@ def enrich_lambda_span(agent, span, event, context):
150154
capture_extra_headers(event, span, agent.options.extra_http_headers)
151155

152156
elif is_cloudwatch_trigger(event):
153-
span.set_tag('lambda.trigger', 'aws:cloudwatch.events')
157+
logger.debug("Detected as Cloudwatch Trigger")
158+
span.set_tag(STR_LAMBDA_TRIGGER, 'aws:cloudwatch.events')
154159
span.set_tag('data.lambda.cw.events.id', event['id'])
155160

156161
resources = event['resources']
@@ -169,7 +174,8 @@ def enrich_lambda_span(agent, span, event, context):
169174
span.set_tag('lambda.cw.events.resources', report)
170175

171176
elif is_cloudwatch_logs_trigger(event):
172-
span.set_tag('lambda.trigger', 'aws:cloudwatch.logs')
177+
logger.debug("Detected as Cloudwatch Logs Trigger")
178+
span.set_tag(STR_LAMBDA_TRIGGER, 'aws:cloudwatch.logs')
173179

174180
try:
175181
if 'awslogs' in event and 'data' in event['awslogs']:
@@ -196,7 +202,8 @@ def enrich_lambda_span(agent, span, event, context):
196202
except Exception as e:
197203
span.set_tag('lambda.cw.logs.decodingError', repr(e))
198204
elif is_s3_trigger(event):
199-
span.set_tag('lambda.trigger', 'aws:s3')
205+
logger.debug("Detected as S3 Trigger")
206+
span.set_tag(STR_LAMBDA_TRIGGER, 'aws:s3')
200207

201208
if "Records" in event:
202209
events = []
@@ -218,12 +225,17 @@ def enrich_lambda_span(agent, span, event, context):
218225
span.set_tag('lambda.s3.events', events)
219226

220227
elif is_sqs_trigger(event):
221-
span.set_tag('lambda.trigger', 'aws:sqs')
228+
logger.debug("Detected as SQS Trigger")
229+
span.set_tag(STR_LAMBDA_TRIGGER, 'aws:sqs')
222230

223231
if "Records" in event:
224232
events = []
225233
for item in event["Records"][:3]:
226234
events.append({'queue': item['eventSourceARN']})
227235
span.set_tag('lambda.sqs.messages', events)
228-
except:
236+
else:
237+
logger.debug("Detected as Unknown Trigger: %s" % event)
238+
span.set_tag(STR_LAMBDA_TRIGGER, 'unknown')
239+
240+
except Exception:
229241
logger.debug("enrich_lambda_span: ", exc_info=True)

0 commit comments

Comments
 (0)