Prevent AttributeError from being raised when lambda event is a list (#1738)

This commit is contained in:
Evan Pavlica
2023-04-04 11:53:21 -07:00
committed by GitHub
parent e4d42e6632
commit a7a4f71570
3 changed files with 17 additions and 1 deletions

View File

@ -16,6 +16,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Make Django request span attributes available for `start_span`.
([#1730](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1730))
### Fixed
- Fix `AttributeError` when AWS Lambda handler receives a list event
([#1738](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1738))
## Version 1.17.0/0.38b0 (2023-03-22)

View File

@ -342,7 +342,9 @@ def _instrument(
# If the request came from an API Gateway, extract http attributes from the event
# https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/semantic_conventions/instrumentation/aws-lambda.md#api-gateway
# https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/semantic_conventions/http.md#http-server-semantic-conventions
if lambda_event and lambda_event.get("requestContext"):
if isinstance(lambda_event, dict) and lambda_event.get(
"requestContext"
):
span.set_attribute(SpanAttributes.FAAS_TRIGGER, "http")
if lambda_event.get("version") == "2.0":

View File

@ -399,6 +399,15 @@ class TestAwsLambdaInstrumentor(TestBase):
},
)
def test_lambda_handles_list_event(self):
AwsLambdaInstrumentor().instrument()
mock_execute_lambda([{"message": "test"}])
spans = self.memory_exporter.get_finished_spans()
assert spans
def test_uninstrument(self):
AwsLambdaInstrumentor().instrument()