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

时间:2019-05-22 21:37:36

标签: bash amazon-web-services aws-lambda aws-cli

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

aws lambda update-function-code --function-name myFunction --zip-file fileb://archive.zip

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

  • $ LATEST (默认)
  • 1
  • 2

和别名

  • 暂存(指向版本 1
  • 产品(指向版本 2

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


第一次尝试

aws lambda update-function-code --function-name arn:aws:lambda:us-west-2:123456789000:function:myFunction:staging --zip-file fileb://archive.zip

给出错误

  

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


第二次尝试

aws lambda update-function-code --function-name myFunction --zip-file fileb://archive.zip --s3-object-version 1

aws lambda update-function-code --function-name myFunction --zip-file fileb://archive.zip --s3-object-version staging

给出错误

  

请不要提供其他功能代码   提供ZipFile时的参数。


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

2 个答案:

答案 0 :(得分:1)

好的,假设您已经通过以下命令成功部署了lambda:

aws lambda update-function-code --function-name $FUNCTION_NAME --zip-file fileb://lambda.zip

您已经创建了2个带有2个别名的版本(分段生产)。

现在,您只需要发布到严格的版本即可:

VERSION=1
aws lambda update-alias --function-name $FUNCTION_NAME --name staging --function-version $VERSION
VERSION=2
aws lambda update-alias --function-name $FUNCTION_NAME --name prod --function-version $VERSION

如果要更进一步,可以将上一个部署绑定到最新版本。因此,首先您需要获取最新版本,为此,我使用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

这是update-alias文档。 这是publish-version文档。

答案 1 :(得分:1)

基于AWS文档

  

发布的版本是不可变的。也就是说,您无法更改代码或配置信息。

因此,您需要发布函数的新版本,然后更新别名以指向新创建的版本。