mirror of
https://github.com/open-telemetry/opentelemetry-python-contrib.git
synced 2025-07-29 21:23:55 +08:00
Fixes issue with headers not being a dict in AWS lambda instr (#1055)
This commit is contained in:
11
CHANGELOG.md
11
CHANGELOG.md
@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
## [Unreleased](https://github.com/open-telemetry/opentelemetry-python/compare/v1.11.1-0.30b1...HEAD)
|
||||
|
||||
### Fixed
|
||||
- `opentelemetry-instrumentation-aws-lambda` Fixed an issue - in some rare cases (API GW proxy integration test)
|
||||
headers are set to None, breaking context propagators.
|
||||
([#1055](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1055))
|
||||
|
||||
## [1.11.1-0.30b1](https://github.com/open-telemetry/opentelemetry-python/releases/tag/v1.11.1-0.30b1) - 2022-04-21
|
||||
|
||||
@ -14,6 +18,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
- `opentelemetry-instrumentation-starlette` Capture custom request/response headers in span attributes
|
||||
([#1046])(https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1046)
|
||||
|
||||
### Fixed
|
||||
- Prune autoinstrumentation sitecustomize module directory from PYTHONPATH immediately
|
||||
([#1066](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1066))
|
||||
|
||||
@ -23,13 +28,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
- `opentelemetry-instrumentation-pyramid` Fixed which package is the correct caller in _traced_init.
|
||||
([#830](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/830))
|
||||
- `opentelemetry-instrumentation-tornado` Fix Tornado errors mapping to 500
|
||||
([#1048])(https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1048)
|
||||
([#1048](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1048))
|
||||
- `opentelemetry-instrumentation-urllib` make span attributes available to sampler
|
||||
([1014](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1014))
|
||||
- `opentelemetry-instrumentation-flask` Fix non-recording span bug
|
||||
([#999])(https://github.com/open-telemetry/opentelemetry-python-contrib/pull/999)
|
||||
([#999](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/999))
|
||||
- `opentelemetry-instrumentation-tornado` Fix non-recording span bug
|
||||
([#999])(https://github.com/open-telemetry/opentelemetry-python-contrib/pull/999)
|
||||
([#999](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/999))
|
||||
|
||||
### Added
|
||||
|
||||
|
@ -108,6 +108,8 @@ def _default_event_context_extractor(lambda_event: Any) -> Context:
|
||||
Assumes the Lambda Event is a map with the headers under the 'headers' key.
|
||||
This is the mapping to use when the Lambda is invoked by an API Gateway
|
||||
REST API where API Gateway is acting as a pure proxy for the request.
|
||||
Protects headers from being something other than dictionary, as this
|
||||
is what downstream propagators expect.
|
||||
|
||||
See more:
|
||||
https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html#api-gateway-simple-proxy-for-lambda-input-format
|
||||
@ -118,12 +120,14 @@ def _default_event_context_extractor(lambda_event: Any) -> Context:
|
||||
Returns:
|
||||
A Context with configuration found in the event.
|
||||
"""
|
||||
headers = None
|
||||
try:
|
||||
headers = lambda_event["headers"]
|
||||
except (TypeError, KeyError):
|
||||
logger.debug(
|
||||
"Extracting context from Lambda Event failed: either enable X-Ray active tracing or configure API Gateway to trigger this Lambda function as a pure proxy. Otherwise, generated spans will have an invalid (empty) parent context."
|
||||
)
|
||||
if not isinstance(headers, dict):
|
||||
headers = {}
|
||||
return get_global_textmap().extract(headers)
|
||||
|
||||
|
Reference in New Issue
Block a user