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 | ||||
| 
 | ||||
| ### 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 | ||||
|   ([#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 | ||||
|  |  | |||
|  | @ -410,7 +410,7 @@ class AwsLambdaInstrumentor(BaseInstrumentor): | |||
|         """Instruments Lambda Handlers on AWS Lambda. | ||||
| 
 | ||||
|         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: | ||||
|             **kwargs: Optional arguments | ||||
|  | @ -422,6 +422,14 @@ class AwsLambdaInstrumentor(BaseInstrumentor): | |||
|                     request. | ||||
|         """ | ||||
|         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 | ||||
|         ( | ||||
|             self._wrapped_module_name, | ||||
|  |  | |||
|  | @ -495,6 +495,20 @@ class TestAwsLambdaInstrumentor(TestBase): | |||
| 
 | ||||
|         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): | ||||
|         AwsLambdaInstrumentor().instrument() | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue