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