Guide to default AWS Lambda environment variables
- Authors
- Name
- Tomasz Łakomy
- @tlakomy
Tired of using AWS Console? 🤕
Time to boost your productivity with Cloudash — an AWS desktop client.
AWS Lambda runtimes set a number of default environment variables during initialization of every serverless function.
The following variables are reserved and cannot be set in your function configuration:
_HANDLER
- The location of a functions's handler._X_AMZN_TRACE_ID
- X-Ray tracing headerAWS_REGION
- The region the function is running in (we all know it'sus-east-1
).AWS_EXECUTION_ENV
- The AWS Lambda runtime identifier. Examples:AWS_Lambda_nodejs14.x
,AWS_Lambda_java8
.AWS_LAMBDA_FUNCTION_NAME
- The name of the function (which is either "hello world" or IaC randomly generated one, there's no between).AWS_LAMBDA_FUNCTION_MEMORY_SIZE
- The amount of memory allocated to the function (e.g. 1024MB).AWS_LAMBDA_FUNCTION_VERSION
- The version of the function (e.g.$LATEST
).AWS_LAMBDA_INITIALIZATION_TYPE
- The initialization type of the function, can be eitheron-demand
orprovisioned-concurrency
.AWS_LAMBDA_LOG_GROUP_NAME
- The name of the CloudWatch log group.AWS_LAMBDA_LOG_STREAM_NAME
- The name of the CloudWatch stream.AWS_ACCESS_KEY
,AWS_ACCESS_KEY_ID
,AWS_SECRET_ACCESS_KEY
,AWS_SESSION_TOKEN
- The access keys obtained from the function's execution role. Be careful with those, read SAS-7: Insecure Application Secrets Storage for guidance. This post on Security for AWS Lambda Serverless Applications is also a good place to start.AWS_LAMBDA_RUNTIME_API
- The host and port of the AWS Lambda runtime API, example:127.0.0.1:9001
LAMBDA_TASK_ROOT
- The path to your Lambda function codeLAMBDA_RUNTIME_DIR
- The path to runtime librariesTZ
- The timezone information, e.g.:UTC'
In addition to that, AWS Lambda runtime sets additional variables that are not reserved and can be extended in your function configuration:
LANG
- The language of your function's runtime, e.g.en_US.UTF-8
PATH
- The execution path, e.g./var/lang/bin:/usr/local/bin:/usr/bin/:/bin:/opt/bin
LD_LIBRARY_PATH
- The system library path, e.g./var/lang/lib:/lib64: /usr/lib64:/var/runtime: /var/runtime/lib:/var/task:/var/task/lib:/opt/lib
AWS_XRAY_CONTEXT_MISSING
- Quoting the docs: "For X-Ray tracing, Lambda sets this toLOG_ERROR
to avoid throwing runtime errors from the X-Ray SDK."AWS_XRAY_DAEMON_ADDRESS
- The IP address and port of the X-Ray daemon.
There are also a few runtime-specific environment variables:
NODE_PATH
- A node.js env variable, containing node.js library path, e.g./opt/nodejs/node14/node_modules: /opt/nodejs/node_modules: /var/runtime/node_modules:/var/runtime:/var/task
PYTHONPATH
- The Python library pathGEM_PATH
- The Ruby library pathAWS_LAMBDA_DOTNET_PREJIT
- Quoting the docs: "For the .NET 3.1 runtime, set this variable to enable or disable .NET 3.1 specific runtime optimizations. Values includealways
,never
, andprovisioned-concurrency
."
Tired of switching between AWS console tabs? 😒
Cloudash provides clear access to CloudWatch logs and metrics, to help you make quicker decisions.
Try it for free: