amazon-web-services - 如何使用无服务器部署为 AWS lambda 部署环境变量
问题描述
我是 AWS lambda 的新手,我正在使用无服务部署来部署我在 serverless.yml 文件中声明的 lambda 函数。在该文件中,我编写了一个部署的 lambda 函数,它工作正常,但问题是我提供的任何环境变量在该 lambda 函数的控制台中都不可用。我可能会犯一些小错误,或者为了部署环境变量应该有一些其他的语法。我可以在控制台中转到 lambda 函数并手动添加环境变量。但我的疑问是我们可以在通过部署它的同时做到这一点serverless deploy
解决方案
您可以使用 AWS Lambda 提供的版本和别名
您可以创建同一个 lambda 函数的不同版本并给它们一个别名。就像你推送你的 lambda 代码时一样——创建一个版本(比如 5)——创建一个别名 this(比如 TEST)。当您确定它已准备好投入生产时,请创建一个版本(或选择现有版本并为其命名(例如 PROD)。
现在,每当您的 lambda 函数执行时,它都会给出
lambda ARN
包含别名的别名,通过它您可以知道执行了哪个别名(在 context.invokedFunctionArn 中),即可以用作环境变量。在调用函数时,您可以从调用代码中提及要执行的函数。
let thisARN = context.invokedFunctionArn;
// Get the last string in ARN - It's either function name or the alias name
let thisAlias = thisARN.split(":").pop();
现在,每当您部署新代码时,只需将别名指向该版本即可。您可以为此使用 AWS 控制台或 CLI。
看看这个lambda 版本控制和别名
要直接部署到您的别名(PROD),您可以这样做 -
aws lambda update-alias \
--region region \
--function-name helloworld \
--function-version 2 \
--name PROD
推荐阅读
- user-interface - 在 Octave GUI 中调用变量到另一个函数
- java - 在已有大量数据的表上创建 MySQL 索引
- python - 在 Python 中正确创建属性的显示名称
- python - 在 Python 中处理 JSON 数组
- tomcat - JasperServer 无法启动监听器,无法连接到 Tomcat
- postgresql - 这个 PostgreQL 模型是否适用于长期使用和安全性?
- python - 在 Pandas 中加速 groupby().apply()
- git - 为什么版本控制系统 Git 先暂存文件,而不是直接提交?
- fonts - 通过 Theme-UI 使用本地自定义字体
- google-apps-script - 使用 Google Apps 脚本在 Google Drive 中以 PDF 格式下载网页