AWS CodePipline(CI / CD)更新现有AWS Lambda的代码(未使用CloudFormation或SAM创建)

问题描述 投票:2回答:1

我需要构建CI / CD管道来更新使用控制台创建的现有Lambda函数的代码。创建一个新的不是一个选择!

我在部署阶段成功使用CloudFormation部署了代码,但是,它只能更新使用CloudFormation / SAM创建的Lambda函数的代码。当我在template.yaml文件中指定Lambda的名称和现有Lambda的名称时,它会尝试创建它并告诉我它已经存在!

我尝试的第二种方法是使用CodeDeploy进行部署,但出现此错误:-“ BundleType必须为YAML或JSON”

此线程提供了解决此问题的方法,我无法将其应用于我的情况:CodePipeline: CodeDeploy reports "BundleType must be either YAML or JSON"

还有其他方法可以建立仅更新Lambda函数代码的正确CI / CD管道吗?

amazon-web-services aws-lambda aws-code-deploy aws-codepipeline aws-code-deploy-appspec
1个回答
0
投票

从CloudFormation更新Lambda代码的一种方法是将您的Lambda代码存储在启用版本控制的S3中。

这里:https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-code.html

在堆栈更新期间不会自动检测到对Amazon S3中的部署软件包的更改。要更新功能代码,请更改模板中的对象键或版本。

因此,管道可能类似于:

  • 1)从存储库中签出Lambda代码。或
  • 2)将新的zip文件上载到版本化的S3存储桶。
  • 如果是1,则压缩内容并将其上传到版本为S3的存储桶中。
  • 完成后,您将具有一个新版本的对象以调用CloudFormation(您需要使用此新版本更新template.yml文件,可以使用CLI检索此新对象版本来完成),并且可能会发生UPDATE文档中所述。

希望有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.