DEV Community

Tomasz Łakomy for AWS Heroes

Posted on • Originally published at cloudash.dev

2 1

Guide to default AWS Lambda environment variables

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 header
  • AWS_REGION - The region the function is running in (we all know it's us-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 either on-demand or provisioned-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 code
  • LAMBDA_RUNTIME_DIR - The path to runtime libraries
  • TZ - 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 to LOG_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 path
  • GEM_PATH - The Ruby library path
  • AWS_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 include always, never, and provisioned-concurrency."

Stay on top of your logs. ⚡️

Cloudash screenshot

Introducing Cloudash, a desktop app for monitoring your serverless services performance, invocations, errors and more.

Did a production incident happen last week? Or 20 seconds ago? With Cloudash you can search, filter and browse your serverless logs and metrics effortlessly.

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more