AWS Distro for OpenTelemetry

AWS Distro for OpenTelemetry Lambda Support For Python

AWS Distro for OpenTelemetry Lambda Support For Python

The AWS managed Lambda layer for ADOT Python provides a plug and play user experience by automatically instrumenting a Lambda function, by packaging OpenTelemetry Python together with an out-of-the-box configuration for AWS Lambda and AWS X-Ray. Users can enable and disable OpenTelemetry for their Lambda function without changing code.




Requirements

The Lambda layer supports Python [3.8, 3.9, 3.10 and 3.11] Lambda runtimes. For more information about supported Python versions, see the OpenTelemetry Python documentation and the package on PyPi.

Add the ARN of the Lambda Layer

In this section, we consume the Lambda layer for use with Python Lambda Functions. This includes a reduced version of the AWS Distro for OpenTelemetry Collector (ADOT Collector), which runs as a Lambda extension.

Note: Lambda layers are a regionalized resource, meaning that they can only be used in the Region in which they are published. Make sure to use the layer in the same region as your Lambda functions.

Find the supported regions and amd64/arm64 layer ARN in the table below for the ARNs to consume. Use amd64 as architecture for x86-based processors.

Supported RegionsLambda layer ARN formatContents
ap-northeast-1
ap-northeast-2
ap-south-1
ap-southeast-1
ap-southeast-2
ca-central-1
eu-central-1
eu-north-1
eu-west-1
eu-west-2
eu-west-3
sa-east-1
us-east-1
us-east-2
us-west-1
us-west-2
arn:aws:lambda:<region>:901920570463:layer:aws-otel-python-<architecture>-ver-1-21-0:1Contains OpenTelemetry Python v1.21.0

Contains ADOT Collector v0.36.0

Enable auto-instrumentation for your Lambda function

To enable the AWS Distro for OpenTelemetry in your Lambda function, you need to add and configure the layer, and then enable tracing.

  1. Open the Lambda function you intend to instrument in the AWS console.
  2. In the Layers in Designer section, choose Add a layer.
  3. Under specify an ARN, paste the layer ARN, and then choose Add.
  4. Enable active tracing for your AWS Lambda function.
  5. Add the environment variable AWS_LAMBDA_EXEC_WRAPPER and set it to /opt/otel-instrument.

Tips:

  • By default, the layer is configured to export traces to AWS X-Ray. When you enable active tracing, Lambda will try to automatically add the necessary X-Ray permission to your Lambda role if they are missing. In the case it is unsuccessful, make sure your Lambda role has the required AWS X-Ray permissions. For more on AWS X-Ray permissions for AWS Lambda, see the AWS Lambda documentation.

Remove OpenTelemetry from your Lambda function

To disable OpenTelemetry for your Lambda function, remove the Lambda layer, remove the environment variable AWS_LAMBDA_EXEC_WRAPPER, and disable active tracing, as explained in the section above.




Configuration

The ADOT Python layer combines both OpenTelemetry Python and the ADOT Collector. The configuration of the ADOT Collector follows the OpenTelemetry standard.

By default, the ADOT Lambda layer uses the config.yaml, which exports telemetry data to AWS X-Ray. To customize the Collector config, see the main Lambda section for custom configuration instructions

The ADOT Python Lambda Layer can also be configured to set a Meter Provider with an appropriate reader and exporter if the OTEL_METRICS_EXPORTER environment variable is set to the values noted here.
The OTEL_EXPORTER_OTLP_PROTOCOL environment variable should also be set in correlation to the metrics exporter with these supported values. If these environment variables are not set, then a default Meter Provider with no readers will be set and cannot be overriden.




Additional Instrumentation

For additional instrumentation, see the OpenTelemetry Python documentation.