如何使用 AWS CLI 将 lambda 函数部署到特定别名或版本?

Hon*_*iao 2 bash amazon-web-services aws-cli aws-lambda

在我拥有 Lambda 版本和别名之前,基于 API update-function-code我可以通过以下方式成功部署

aws lambda update-function-code --function-name myFunction --zip-file fileb://archive.zip
Run Code Online (Sandbox Code Playgroud)

添加版本和别名后,我有 Lambda 版本

  • $LATEST(默认)
  • 1
  • 2

和别名

  • 暂存(指向版本1)
  • prod(指向版本2)

我尝试部署到登台(版本1),


第一次尝试

aws lambda update-function-code --function-name arn:aws:lambda:us-west-2:123456789000:function:myFunction:staging --zip-file fileb://archive.zip
Run Code Online (Sandbox Code Playgroud)

给出错误

当前操作不支持 $LATEST 以外的版本。请将版本设置为 $LATEST 或不要在您的请求中设置版本。


第二次尝试

aws lambda update-function-code --function-name myFunction --zip-file fileb://archive.zip --s3-object-version 1
Run Code Online (Sandbox Code Playgroud)

或者

aws lambda update-function-code --function-name myFunction --zip-file fileb://archive.zip --s3-object-version staging
Run Code Online (Sandbox Code Playgroud)

给出错误

提供 ZipFile 时请不要提供其他 FunctionCode 参数。


如何使用 AWS CLI 将 lambda 函数正确部署到特定别名或版本?谢谢

BTL*_*BTL 12

好的,假设您已经设法使用以下命令部署了 lambda:

aws lambda update-function-code --function-name $FUNCTION_NAME --zip-file fileb://lambda.zip
Run Code Online (Sandbox Code Playgroud)

并且您已经创建了 2 个具有 2 个别名的版本(暂存产品)。

现在你只需要发布到 rigth 版本:

VERSION=1
aws lambda update-alias --function-name $FUNCTION_NAME --name staging --function-version $VERSION
Run Code Online (Sandbox Code Playgroud)
VERSION=2
aws lambda update-alias --function-name $FUNCTION_NAME --name prod --function-version $VERSION
Run Code Online (Sandbox Code Playgroud)

如果您想更进一步,您可以将最后一个部署绑定到最新版本。所以首先你需要检索最新版本,为此我使用jq但随意使用任何你想要的,然后用这个版本更新。

VERSION=$(aws lambda publish-version --function-name $FUNCTION_NAME | jq -r .Version)
aws lambda update-alias --function-name $FUNCTION_NAME --name staging --function-version $VERSION
Run Code Online (Sandbox Code Playgroud)

这是更新别名文档。这是发布版本文档。