refactor: avoid exception when lambda_handler envs not present in aws-lambda instrumentation (#2750)

This commit is contained in:
Ronald 2024-07-30 14:53:08 -03:00 committed by GitHub
parent 1c8d8ef536
commit d563f8d841
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 26 additions and 2 deletions

View File

@ -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

View File

@ -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,

View File

@ -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()