--- title: "Python APM with AWS Lambda" slug: "python-apm-with-aws-lambda" description: "Learn how to set up APM for AWS Lambda Python Functions. Add Stackify Layer, configure environment variables, and monitor performance with ease." updated: 2020-04-08T20:09:52Z published: 2020-04-08T20:09:52Z canonical: "docs.stackify.com/python-apm-with-aws-lambda" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.stackify.com/llms.txt > Use this file to discover all available pages before exploring further. # Python APM with AWS Lambda This document details how to setup **APM** with your **AWS Lambda Python Functions**. ![image.png](https://cdn.document360.io/3fcaf473-a1ef-4778-aa2c-fd28411c2b01/Images/Documentation/image%285%29.png) ## Stackify AWS Monitor Setup **AWS Lambda** support requires a **Stackify AWS Monitor** server to forward application data to Stackify. A monitoring server is required for each AWS region you are using functions. Log into your AWS account and click the **Launch Stack** button below to deploy the **CloudFormation Stack Cloud Formation Template**. Set parameter **StackifyLambda** is set to `true`. [![image](https://s3.amazonaws.com/cloudformation-examples/cloudformation-launch-stack.png)](https://console.aws.amazon.com/cloudformation/home#/stacks/new?stackName=stackify-aws-monitor&templateURL=https://s3.amazonaws.com/download.stackify.com/aws-template/aws-monitor-cloudformation-template.yaml) ## Lambda Function Setup Stackify APM works by adding a **Lambda Layer** to your function. ### 1. Add Stackify Layer to Function On your function **Configuration** page, click the **Add a layer** button: ![image.png](https://cdn.document360.io/3fcaf473-a1ef-4778-aa2c-fd28411c2b01/Images/Documentation/image%283%29.png) Find the correct **StackifyPythonAPMLayer ARN** for the region you are working in below: | Region | Layer ARN | | --- | --- | | us-east-1 | arn:aws:lambda:us-east-1:686826687729:layer:StackifyPythonAPMLayer:4 | | us-east-2 | arn:aws:lambda:us-east-2:686826687729:layer:StackifyPythonAPMLayer:11 | | us-west-1 | arn:aws:lambda:us-west-1:686826687729:layer:StackifyPythonAPMLayer:3 | | us-west-2 | arn:aws:lambda:us-west-2:686826687729:layer:StackifyPythonAPMLayer:3 | | ap-south-1 | arn:aws:lambda:ap-south-1:686826687729:layer:StackifyPythonAPMLayer:3 | | ap-northeast-1 | arn:aws:lambda:ap-northeast-1:686826687729:layer:StackifyPythonAPMLayer:3 | | ap-northeast-2 | arn:aws:lambda:ap-northeast-2:686826687729:layer:StackifyPythonAPMLayer:3 | | ap-southeast-1 | arn:aws:lambda:ap-southeast-1:686826687729:layer:StackifyPythonAPMLayer:3 | | ap-southeast-2 | arn:aws:lambda:ap-southeast-2:686826687729:layer:StackifyPythonAPMLayer:3 | | ca-central-1 | arn:aws:lambda:ca-central-1:686826687729:layer:StackifyPythonAPMLayer:3 | | eu-central-1 | arn:aws:lambda:eu-central-1:686826687729:layer:StackifyPythonAPMLayer:3 | | eu-west-1 | arn:aws:lambda:eu-west-1:686826687729:layer:StackifyPythonAPMLayer:3 | | eu-west-2 | arn:aws:lambda:eu-west-2:686826687729:layer:StackifyPythonAPMLayer:3 | | eu-west-3 | arn:aws:lambda:eu-west-3:686826687729:layer:StackifyPythonAPMLayer:3 | | eu-north-1 | arn:aws:lambda:eu-north-1:686826687729:layer:StackifyPythonAPMLayer:3 | | sa-east-1 | arn:aws:lambda:sa-east-1:686826687729:layer:StackifyPythonAPMLayer:3 | ### 2. Configure Stackify Layer The **StackifyPythonAPMLayer** works by changing your function handler to our profiler (**stackifyapm.contrib.aws_lambda.function.handler*). The profiler is a wrapper and calls the function set in the environment variable **STACKIFY_LAMBDA_HANDLER**. - Add **Environment Variables** - **STACKIFY_LAMBDA_HANDLER** - Your function handler ie) **my_function.my_handler** - **STACKIFY_APPLICATION_NAME** - Application Name to associate with function. - **STACKIFY_ENVIRONMENT_NAME** - Environment Name to associate with function. - Update **Handler** to **stackifyapm.contrib.aws_lambda.function.handler** - **Save** your function. ### 3. Test Run a test execution of your function and verify that the **Log output** contains a `STACKIFY-TRACE` line. - After a few minutes of function traffic, goto **Retrace** > **Monitoring** > **Other Apps**. - Click **Add App** - Click **Existing Server** - Find your application by name and click **Add** ## AWS Costs - Each **Stackify AWS Monitor** runs inside an **t2.micro** ec2 instance by default. - The **StackifyPythonAPMLayer** writes logs to **CloudWatch** for each function execution. We suggest reducing retention on **CloudWatch LogGroups**.