[英]How to update Lambda code defined/deployed in AWS SAM/CodePipeline?
我正在尝试在 AWS SAM 模板中为 Step/Lambda 函数和 REST API 创建 CI/CD 管道。 整体架构如下: 我们采用多存储库方法对 Lambda 函数进行源代码控制。 每个 Lambda 函数都有自己的 Git 存储库和自己的管道,用于压缩代码并将其推送到 S3 存储桶(例如 lambda-bucket)。
构建 Step/Lambda 函数和 REST API 的 SAM 模板是通过 CodePipeline 部署的,CodePipeline 由保存压缩 Lambda 代码的 S3 存储桶上的 PUT 触发。 它通过 CodePipeline 中的 CloudFormation ChangeSet 创建步骤进行部署。
SAM 模板中的 Lambda 函数如下所示:
myFirstLambda:
Type: AWS::Serverless::Function
Properties:
FunctionName: !Sub myFirstLambda-${StackStage}
CodeUri:
Bucket: lambda-bucket
Key: !Sub lambdas/myFirstLambda-${StackStage}.zip
Handler: lambda_function.lambda_handler
Runtime: python3.8
AutoPublishAlias: live
我遇到的问题是:当我将更新推送到 S3 lambda 存储桶中的 Lambda 函数的 zip 时,SAM 模板没有看到更改。 创建 ChangeSet 时,它会失败,因为没有任何新内容可供部署。 我曾尝试添加一个构建阶段来构建、打包和部署 SAM 模板,结果出现了同样的问题。
对此有任何想法或修复吗? 我很感激任何帮助。
请查看此页面:
https://docs.aws.amazon.com/codepipeline/latest/userguide/tutorials-serverlessrepo-auto-publish.html
对我来说,“第 4 步:创建发布操作”似乎是一种不同的方法,只需在管道中添加另一个步骤来发布它,而不是监控 S3。
但我还没有尝试。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.