如何使用适用于AWS Lambda的无服务器部署来部署环境变量

时间:2018-07-06 04:57:42

标签: amazon-web-services aws-lambda yaml aws-serverless

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

进行部署时,我们可以这样做吗?

2 个答案:

答案 0 :(得分:0)

  

您可以使用AWS Lambda提供的版本和别名

您可以创建同一lambda函数的不同版本,并为其指定别名。就像当您推送lambda代码时一样-创建一个版本(例如5)-创建一个别名(例如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 versioning and aliases

要直接部署到您的别名(PROD),可以执行以下操作-

    aws lambda update-alias \
    --region region \
    --function-name helloworld \
    --function-version 2 \
    --name PROD

答案 1 :(得分:0)

serverless deploy 

无服务器部署在任何阶段都可以很好地部署,也可以在给定阶段部署环境变量,我的案例环境变量没有部署yaml文件中的缩进问题,甚至无服务器部署命令也没有抛出错误,它正在部署功能但环境变量未部署

在yaml文件中,我们可以像这样声明要部署的阶段

provider:
name: aws
runtime: nodejs6.10
stage: dev
region: eu-west-2

希望如果有人遇到类似问题,这会有所帮助