--- title: "PHP APM with AWS Lambda" slug: "php-apm-with-aws-lambda" description: "Learn how to set up APM for AWS Lambda PHP Functions. Add Stackify Layer, configure PHP runtime, and test your function. Optimize AWS costs with Stackify AWS Monitor." updated: 2020-04-08T20:11:13Z published: 2020-04-08T20:11:13Z canonical: "docs.stackify.com/php-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. # PHP APM with AWS Lambda This document details how to setup **APM** with your **AWS Lambda PHP 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%288%29.png) Find the correct **StackifyPHPAPMLayer ARN** for the region you are working in below: | Region | Layer ARN | | --- | --- | | us-east-1 | arn:aws:lambda:us-east-1:686826687729:layer:StackifyPHPAPMLayer:2 | | us-east-2 | arn:aws:lambda:us-east-2:686826687729:layer:StackifyPHPAPMLayer:2 | | us-west-1 | arn:aws:lambda:us-west-1:686826687729:layer:StackifyPHPAPMLayer:2 | | us-west-2 | arn:aws:lambda:us-west-2:686826687729:layer:StackifyPHPAPMLayer:2 | | ap-south-1 | arn:aws:lambda:ap-south-1:686826687729:layer:StackifyPHPAPMLayer:2 | | ap-northeast-1 | arn:aws:lambda:ap-northeast-1:686826687729:layer:StackifyPHPAPMLayer:2 | | ap-northeast-2 | arn:aws:lambda:ap-northeast-2:686826687729:layer:StackifyPHPAPMLayer:2 | | ap-southeast-1 | arn:aws:lambda:ap-southeast-1:686826687729:layer:StackifyPHPAPMLayer:2 | | ap-southeast-2 | arn:aws:lambda:ap-southeast-2:686826687729:layer:StackifyPHPAPMLayer:2 | | ca-central-1 | arn:aws:lambda:ca-central-1:686826687729:layer:StackifyPHPAPMLayer:2 | | eu-central-1 | arn:aws:lambda:eu-central-1:686826687729:layer:StackifyPHPAPMLayer:2 | | eu-west-1 | arn:aws:lambda:eu-west-1:686826687729:layer:StackifyPHPAPMLayer:2 | | eu-west-2 | arn:aws:lambda:eu-west-2:686826687729:layer:StackifyPHPAPMLayer:2 | | eu-west-3 | arn:aws:lambda:eu-west-3:686826687729:layer:StackifyPHPAPMLayer:2 | | eu-north-1 | arn:aws:lambda:eu-north-1:686826687729:layer:StackifyPHPAPMLayer:2 | | sa-east-1 | arn:aws:lambda:sa-east-1:686826687729:layer:StackifyPHPAPMLayer:2 | ### 2. Configure Stackify Layer The **StackifyPHPAPMLayer** supplies the Stackify PHP Profiler. - Adjust PHP Runtime - Ensure that **PHP** is built with `--with-config-file-scan-dir`. - Adjust your `bootstrap` php script to include: `require '/opt/stackify/Stackify.php';` - Add **Environment Variables** - **STACKIFY_APPLICATION_NAME** - Application Name to associate with function. - **STACKIFY_ENVIRONMENT_NAME** - Environment Name to associate with function. - **PHP_INI_SCAN_DIR** - `:/opt/stackify/ini/linux_[32|64]_[php version]`. For example 64 bit distro with PHP 7.3 would be `:/opt/stackify/ini/linux_64_7.3` - **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 **StackifyPHPAPMLayer** writes logs to **CloudWatch** for each function execution. We suggest reducing retention on **CloudWatch LogGroups**.