refactor: avoid exception when lambda_handler envs not present in aws-lambda instrumentation (#2750)
This commit is contained in:
parent
1c8d8ef536
commit
d563f8d841
|
|
@ -7,8 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||||
|
|
||||||
## Unreleased
|
## Unreleased
|
||||||
|
|
||||||
### Fixed
|
## Fixed
|
||||||
|
|
||||||
|
- `opentelemetry-instrumentation-aws-lambda` Avoid exception when a handler is not present.
|
||||||
|
([#2750](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2750))
|
||||||
- `opentelemetry-instrumentation-django` Fix regression - `http.target` re-added back to old semconv duration metrics
|
- `opentelemetry-instrumentation-django` Fix regression - `http.target` re-added back to old semconv duration metrics
|
||||||
([#2746](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2746))
|
([#2746](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2746))
|
||||||
- `opentelemetry-instrumentation-grpc` Fixes the issue with the gRPC instrumentation not working with the 1.63.0 and higher version of gRPC
|
- `opentelemetry-instrumentation-grpc` Fixes the issue with the gRPC instrumentation not working with the 1.63.0 and higher version of gRPC
|
||||||
|
|
|
||||||
|
|
@ -410,7 +410,7 @@ class AwsLambdaInstrumentor(BaseInstrumentor):
|
||||||
"""Instruments Lambda Handlers on AWS Lambda.
|
"""Instruments Lambda Handlers on AWS Lambda.
|
||||||
|
|
||||||
See more:
|
See more:
|
||||||
https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/semantic_conventions/instrumentation/aws-lambda.md#instrumenting-aws-lambda
|
https://github.com/open-telemetry/semantic-conventions/blob/main/docs/faas/aws-lambda.md
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
**kwargs: Optional arguments
|
**kwargs: Optional arguments
|
||||||
|
|
@ -422,6 +422,14 @@ class AwsLambdaInstrumentor(BaseInstrumentor):
|
||||||
request.
|
request.
|
||||||
"""
|
"""
|
||||||
lambda_handler = os.environ.get(ORIG_HANDLER, os.environ.get(_HANDLER))
|
lambda_handler = os.environ.get(ORIG_HANDLER, os.environ.get(_HANDLER))
|
||||||
|
if not lambda_handler:
|
||||||
|
logger.warning(
|
||||||
|
(
|
||||||
|
"Could not find the ORIG_HANDLER or _HANDLER in the environment variables. ",
|
||||||
|
"This instrumentation requires the OpenTelemetry Lambda extension installed.",
|
||||||
|
)
|
||||||
|
)
|
||||||
|
return
|
||||||
# pylint: disable=attribute-defined-outside-init
|
# pylint: disable=attribute-defined-outside-init
|
||||||
(
|
(
|
||||||
self._wrapped_module_name,
|
self._wrapped_module_name,
|
||||||
|
|
|
||||||
|
|
@ -495,6 +495,20 @@ class TestAwsLambdaInstrumentor(TestBase):
|
||||||
|
|
||||||
exc_env_patch.stop()
|
exc_env_patch.stop()
|
||||||
|
|
||||||
|
def test_lambda_handles_should_do_nothing_when_environment_variables_not_present(
|
||||||
|
self,
|
||||||
|
):
|
||||||
|
exc_env_patch = mock.patch.dict(
|
||||||
|
"os.environ",
|
||||||
|
{_HANDLER: ""},
|
||||||
|
)
|
||||||
|
exc_env_patch.start()
|
||||||
|
AwsLambdaInstrumentor().instrument()
|
||||||
|
|
||||||
|
spans = self.memory_exporter.get_finished_spans()
|
||||||
|
self.assertEqual(len(spans), 0)
|
||||||
|
exc_env_patch.stop()
|
||||||
|
|
||||||
def test_uninstrument(self):
|
def test_uninstrument(self):
|
||||||
AwsLambdaInstrumentor().instrument()
|
AwsLambdaInstrumentor().instrument()
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue