使用 Lambda 环境变量配置代码中的值
您可以使用环境变量来调整函数的行为,而无需更新代码。环境变量是存储在函数的版本特定配置中的一对字符串。Lambda 运行时使环境变量可用于您的代码,并设置其他环境变量,这些变量包含有关函数和调用请求的信息。
注意
为了提高安全性,建议使用 AWS Secrets Manager 而非环境变量来存储数据库凭证和其他敏感信息,例如 API 密钥或授权令牌。有关更多信息,请参阅使用 AWS Secrets Manager 创建和管理密钥。
环境变量不会在调用函数之前评估。您定义的任何值都将被视为文字字符串,且不会被展开。在函数代码中执行变量估算。
您可以使用 Lambda 控制台、AWS Command Line Interface(AWS CLI)、AWS Serverless Application Model(AWS SAM)或使用 AWS SDK 在 Lambda 中配置环境变量。
定义运行时环境变量
Lambda 运行时会在初始化过程中设置多个环境变量。大多数环境变量提供有关函数或运行时的信息。这些环境变量的键是预留 的,无法在函数配置中设置。
预留环境变量
-
_HANDLER
– 函数上配置的处理程序位置。 -
_X_AMZN_TRACE_ID
– X-Ray 跟踪标头。此环境变量会随着每次调用发生变化。-
此环境变量不是为仅限操作系统的运行时系统(
provided
运行时系统系列)定义的。您可以使用来自 下一个调用 的Lambda-Runtime-Trace-Id
响应标头设置用于自定义运行时的_X_AMZN_TRACE_ID
。 -
对于 Java 运行时系统版本 17 及更高版本,不使用此环境变量。相反,Lambda 将把跟踪信息存储在
com.amazonaws.xray.traceHeader
系统属性中。
-
-
AWS_DEFAULT_REGION
– 执行 Lambda 函数的默认 AWS 区域。 -
AWS_REGION
– 执行 Lambda 函数的 AWS 区域。如果定义了该值,该值将会覆盖AWS_DEFAULT_REGION
。-
有关在 AWS SDK 中使用 AWS 区域 环境变量的更多信息,请参阅《AWS SDK 和工具参考指南》中的 AWS 区域。
-
-
AWS_EXECUTION_ENV
– 运行时标识符,前缀为AWS_Lambda_
(例如AWS_Lambda_java8
)。此环境变量不是为仅限操作系统的运行时系统(provided
运行时系统系列)定义的。 -
AWS_LAMBDA_FUNCTION_NAME
– 函数的名称。 -
AWS_LAMBDA_FUNCTION_MEMORY_SIZE
– 对函数可用的内存量(以 MB 为单位)。 -
AWS_LAMBDA_FUNCTION_VERSION
– 要执行的函数的版本。 -
AWS_LAMBDA_INITIALIZATION_TYPE
– 函数的初始化类型,即on-demand
、provisioned-concurrency
或snap-start
。有关信息,请参阅配置预置并发或 使用 Lambda SnapStart 提高启动性能。 -
AWS_LAMBDA_LOG_GROUP_NAME
、AWS_LAMBDA_LOG_STREAM_NAME
– Amazon CloudWatch Logs 组和函数的流名称。AWS_LAMBDA_LOG_GROUP_NAME
和AWS_LAMBDA_LOG_STREAM_NAME
环境变量在 Lambda SnapStart 函数中不可用。 -
AWS_ACCESS_KEY
、AWS_ACCESS_KEY_ID
、AWS_SECRET_ACCESS_KEY
AWS_SESSION_TOKEN
– 从函数的执行角色中获取的访问密钥。 -
LAMBDA_TASK_ROOT
– Lambda 函数代码的路径。 -
LAMBDA_RUNTIME_DIR
– 运行时库的路径。
以下附加环境变量并非预留,可以在函数配置中扩展。
非预留环境变量
-
LANG
– 运行时的区域设置 (en_US.UTF-8
)。 -
PATH
– 执行路径 (/usr/local/bin:/usr/bin/:/bin:/opt/bin
)。 -
LD_LIBRARY_PATH
– 系统库路径 (/var/lang/lib:/lib64:/usr/lib64:$LAMBDA_RUNTIME_DIR:$LAMBDA_RUNTIME_DIR/lib:$LAMBDA_TASK_ROOT:$LAMBDA_TASK_ROOT/lib:/opt/lib
)。 -
NODE_PATH
– (Node.js) Node.js 库路径 (/opt/nodejs/node12/node_modules/:/opt/nodejs/node_modules:$LAMBDA_RUNTIME_DIR/node_modules
)。 -
PYTHONPATH
–(Python 2.7、3.6、3.8)Python 库路径 ($LAMBDA_RUNTIME_DIR
)。 -
GEM_PATH
–(Ruby)Ruby 库路径 ($LAMBDA_TASK_ROOT/vendor/bundle/ruby/2.5.0:/opt/ruby/gems/2.5.0
)。 -
AWS_XRAY_CONTEXT_MISSING
– 对于 X-Ray 跟踪,Lambda 会将其设置为LOG_ERROR
,以避免从 X-Ray 开发工具包引发运行时错误。 -
AWS_XRAY_DAEMON_ADDRESS
– 对于 X-Ray 跟踪,X-Ray 进程守护程序的 IP 地址和端口。 -
AWS_LAMBDA_DOTNET_PREJIT
:对于 .NET 6 和 NET 7 运行时系统,请将此变量设置为启用或禁用 .NET 特定的运行时系统优化。值包括always
、never
和provisioned-concurrency
。有关更多信息,请参阅 为函数配置预置并发。 -
TZ
– 环境的时区 (:UTC
)。执行环境使用 NTP 同步系统时钟。
显示的示例值反映了最新的运行时。特定变量或其值是否存在会因早先的运行时而异。
环境变量的示例场景
您可以使用环境变量来自定义测试环境和生产环境中的函数行为。例如,您可以创建两个具有相同代码但不同配置的函数。一个函数连接到测试数据库,另一个函数连接到生产数据库。在这种情况下,您可以使用环境变量向函数传递数据库的主机名和其他连接详细信息。
以下示例说明如何将数据库主机和数据库名称定义为环境变量。
如果希望测试环境生成比生产环境更多的调试信息,可以设置环境变量来配置测试环境使用更详细的日志记录或跟踪。