AWS Lambda 创建别名

AWS Lambda Create alias

根据 AWS 文档,我可以创建一个新的 lambda 函数别名,例如: aws lambda create-alias \ --region us-west-2 \ --function-name helloworld \ --description "sample alias" \ --function-version "$LATEST" \ --name DEV \ --profile adminuser

据我了解,此命令主要是将代码部署到最新的 lambda 别名。所以我相信它会在我部署后立即激活。但我会在让它上线之前对其进行测试。我的问题是,将它置于中间阶段以便它可以等到我的 Jenkins 测试完成然后激活它的最简单方法是什么?我应该创建另一个功能版本,如 $PRE_LATEST 左右吗?

您列出的命令将创建一个名为 DEV 的别名,它指向 $LATEST Lambda 代码。您可以将 $LATEST 视为一个特殊的别名,它始终指向最近上传的函数代码。这意味着如果您为 Lambda 上传新的函数代码,DEV 现在将指向那个位置,而不是您 运行 create-alias 命令时的位置。这通常不是我们想要的。

如果您想为特定版本的 Lambda 创建别名,您需要先发布一个版本:

$ aws lambda publish-version --function-name helloworld

此命令将从其当前 $LATEST 状态创建 helloworld Lambda 函数的编号版本。该命令的输出将是一些 JSON,其中包括一个版本号字符串,例如:"Version": "2",.

然后您可以使用创建指向此特定版本的别名:

$ aws lambda create-alias --function-name helloworld --name DEV --function-version 2

以后上传新的函数代码时,别名和版本都不会改变。事实上,Lambda 的版本 2 永远不会改变。别名 DEV 可以稍后更新以指向您已发布的不同版本:

$ aws lambda update-alias --function-name helloworld --name DEV --function-version 3

对于您的用例,如果您想将功能代码上传到 Lambda 并在上线之前对其进行测试,我建议您创建一个 LIVE 别名供您的生产服务使用。您的流程将类似于:

  1. 上传新的功能代码。这会更新 $LATEST.
  2. 发布版本。这会将 $LATEST 复制到数字 N
  3. 更新 DEV 别名以指向版本 N
  4. 测试并批准更改。
  5. 更新 LIVE 别名以指向版本 N

希望对您有所帮助!

为了补充上述答案,您可能会将 zip 文件与所有依赖项一起上传到 lambda,然后发布新版本,然后使用现有别名映射该版本。 编写了一个快速 shell 脚本来执行此操作

# Remove zip file if already exit
rm index.zip
# Creating zip file
zip -r index.zip *
# Update lambda function, assuming the name of the current directory is same as the lambda function
lambdaName=${PWD##*/}
aws lambda update-function-code --function-name $lambdaName --zip-file fileb://index.zip
# Publish version
aws lambda publish-version --function-name $lambdaName
# Get latest version
version=$(aws lambda publish-version --function-name $lambdaName --description "updated via cli" --query Version | bc)
# Map alias to latest version this can be LIVE or TEST as per the above answer
aws lambda update-alias --function-name $lambdaName \--function-version $version --name TEST|LIVE

回答问题- 是否可以从控制台更新别名? 只能找到 "Create new Alias" ,并且它会在相同的别名上抛出错误。 – Vineeth 2018 年 2 月 16 日在 9:15

是的,可以从控制台更改 lambda 别名指向的版本,但它被糟糕的 Lambda 隐藏得很好 UI...

点击“别名”下拉菜单,然后select您要更改的别名(例如 Prod)。

底部(隐藏!!!)标题为别名的一半页面将更新,并为您提供一个下拉列表,您可以在其中更改别名描述以及 selected 别名指向的版本.

只有当您更改这些字段之一时,才会启用“保存”按钮。