AWS Lambda 创建别名

Jav*_*Red 0 alias jenkins aws-lambda

根据 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 这样的函数版本吗?

Joe*_*sca 6

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

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

$ aws lambda publish-version --function-name helloworld
Run Code Online (Sandbox Code Playgroud)

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

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

$ aws lambda create-alias --function-name helloworld --name DEV --function-version 2
Run Code Online (Sandbox Code Playgroud)

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

$ aws lambda update-alias --function-name helloworld --name DEV --function-version 3
Run Code Online (Sandbox Code Playgroud)

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

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

希望这可以帮助!