0

我是 AWS lambda 的新手,我正在使用无服务部署来部署我在 serverless.yml 文件中声明的 lambda 函数。在该文件中,我编写了一个部署的 lambda 函数,它工作正常,但问题是我提供的任何环境变量在该 lambda 函数的控制台中都不可用。我可能会犯一些小错误,或者为了部署环境变量应该有一些其他的语法。我可以在控制台中转到 lambda 函数并手动添加环境变量。但我的疑问是我们可以在通过部署它的同时做到这一点serverless deploy

4

2 回答 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 回答