Lambda Execution Environment and Available Libraries
The underlying AWS Lambda execution environment is based on the following:
-
Public Amazon Linux AMI version (AMI name: amzn-ami-hvm-2017.03.1.20170812-x86_64-gp2) which can be accessed here.
For information about using an AMI, see Amazon Machine Images (AMI) in the Amazon EC2 User Guide for Linux Instances.
-
Linux kernel version – 4.9.70-25.242.amzn1.x86_64
If you are using any native binaries in your code, make sure they are compiled in this environment. Note that only 64-bit binaries are supported on AWS Lambda.
AWS Lambda supports the following runtime versions:
-
Node.js – v4.3.2 and 6.10.3
-
Java – Java 8
-
Python – Python 3.6 and 2.7
-
.NET Core – .NET Core 1.0.1 (C#)
Note
Not all runtimes are available on the Public Amazon Linux AMI version or its yum repositories. You may need to download and install them manually from their respective public sites.
The following libraries are available in the AWS Lambda execution environment, regardless of the supported runtime you use, so you don't need to include them:
-
AWS SDK – AWS SDK for JavaScript version 2.143.0
-
AWS SDK for Python 2.7 (Boto 3) version 3-1.4.7 botocore-1.7.37
AWS SDK for Python 3.6 (Boto 3) version 3-1.4.7 botocore-1.7.37
-
Amazon Linux build of
java-1.8.0-openjdkfor Java.
Environment Variables Available to Lambda Functions
The following is a list of environment variables that are part of the AWS Lambda execution environment and made available to Lambda functions. The table below indicates which ones are reserved by AWS Lambda and cannot be changed as well as which ones you can set when creating your Lambda function. For more information on using environment variables with your Lambda function, see Environment Variables.
Lambda Environment Variables
| Key | Reserved | Value |
|---|---|---|
| LAMBDA_TASK_ROOT | Yes | Contains the path to your Lambda function code. |
| AWS_EXECUTION_ENV | Yes | The environment variable is set to one of the following options, depending on the
runtime
of the Lambda function:
|
| LAMBDA_RUNTIME_DIR | Yes | Restricted to Lambda runtime-related artifacts. For example the aws-sdk for Node.js and boto3 for Python can be found under this path. |
| AWS_REGION | Yes | The AWS region where the Lambda function is executed. |
| AWS_DEFAULT_REGION | Yes | The AWS region where the Lambda function is executed. |
| AWS_LAMBDA_LOG_GROUP_NAME | Yes | The name of Amazon CloudWatch Logs group where log streams containing your Lambda function logs are created. |
| AWS_LAMBDA_LOG_STREAM_NAME | Yes | The Amazon CloudWatch Logs streams containing your Lambda function logs. |
| AWS_LAMBDA_FUNCTION_NAME | Yes | The name of the Lambda function. |
| AWS_LAMBDA_FUNCTION_MEMORY_SIZE | Yes | The size of the Lambda function in MB. |
| AWS_LAMBDA_FUNCTION_VERSION | Yes | The version of the Lambda function. |
|
AWS_ACCESS_KEY AWS_ACCESS_KEY_ID AWS_SECRET_KEY AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN AWS_SECURITY_TOKEN |
Yes | The security credentials required to execute the Lambda function, depending on which runtime is used. Different runtimes use a subset of these keys. They are generated via an IAM execution role specified for the function. |
| PATH | No | Contains /usr/local/bin, /usr/bin or /bin for running executables. |
| LANG | No | Set to en_US.UTF-8. This is the Locale of the runtime. |
| LD_LIBRARY_PATH | No | Contains /lib64, /usr/lib64, LAMBDA_TASK_ROOT, LAMBDA_TASK_ROOT/lib. Used to store helper libraries and function code. |
| NODE_PATH | No | Set for the Node.js runtime. It contains LAMBDA_RUNTIME_DIR, LAMBDA_RUNTIME_DIR/node_modules, LAMBDA_TASK_ROOT. |
| PYTHONPATH | No | Set for the Python runtime. It contains LAMBDA_RUNTIME_DIR. |
| TZ | Yes | The current local time. Defaults to UTC. |


