首页 > 解决方案 > 如何使用无服务器部署为 AWS lambda 部署环境变量

问题描述

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

标签: amazon-web-servicesaws-lambdayamlaws-serverless

解决方案


您可以使用 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

推荐阅读