AWS Lambda创建别名

时间:2017-11-20 18:48:55

标签: jenkins aws-lambda 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左右吗?

3 个答案:

答案 0 :(得分:4)

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

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

create-alias

此命令将从当前$ aws lambda publish-version --function-name helloworld 状态创建helloworld Lambda函数的编号版本。该命令的输出将是一些JSON,其中包含版本号字符串,如:$LATEST

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

"Version": "2",

以后上传新功能代码时,别名和版本都不会更改。实际上,Lambda的版本$ aws lambda create-alias --function-name helloworld --name DEV --function-version 2 永远不会改变。别名2可以稍后更新,以指向您发布的其他版本:

DEV

对于您的用例,如果您想将功能代码上传到Lambda并在推送之前对其进行测试,我建议您创建一个生产服务使用的$ aws lambda update-alias --function-name helloworld --name DEV --function-version 3 别名。你的流程就像是:

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

答案 1 :(得分:0)

只需添加上述答案,您就可以将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

答案 2 :(得分:0)

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

是的,可以从控制台更改lambda Alias指向的版本,但深深的Lambda UI很好地隐藏了该版本...

单击“别名”下拉菜单,然后选择要更改的别名(例如,产品)。

标题为Alias的页面的下半部分(隐藏的!!!)将更新,并为您提供一个下拉菜单,您可以在其中更改“别名描述”以及所选别名指向的版本。

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