我是 AWS lambda 的新手,我正在使用无服务部署来部署我在 serverless.yml 文件中声明的 lambda 函数。在该文件中,我编写了一个部署的 lambda 函数,它工作正常,但问题是我提供的任何环境变量在该 lambda 函数的控制台中都不可用。我可能会犯一些小错误,或者为了部署环境变量应该有一些其他的语法。我可以在控制台中转到 lambda 函数并手动添加环境变量。但我的疑问是我们可以在通过部署它的同时做到这一点serverless deploy
问问题
622 次
2 回答
0
您可以使用 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
于 2018-07-06T05:50:29.170 回答
0
serverless deploy
无服务器部署适用于任何阶段的部署,它还在给定阶段部署环境变量,我的案例环境变量未部署 yaml 文件中的缩进问题,甚至无服务器部署命令也没有抛出错误,它正在部署功能但环境变量没有部署
在 yaml 文件中,我们可以像这样声明我们想要部署的阶段
provider:
name: aws
runtime: nodejs6.10
stage: dev
region: eu-west-2
如果有人遇到类似问题,希望这会有所帮助
于 2018-07-10T03:55:10.613 回答