【发布时间】:2021-11-18 04:32:08
【问题描述】:
我正在尝试在 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-bucket 中的 Lambda 函数的 zip 时,SAM 模板看不到任何更改。创建 ChangeSet 时,它会失败,因为没有新的部署。我尝试添加一个构建阶段,该阶段将构建、打包和部署 SAM 模板,但结果相同。
对此有什么想法或解决方法吗?感谢您的帮助。
【问题讨论】:
-
注意 - 我试图避免手动将新的 S3 对象版本 ID 添加到 CodeUri 参数。
标签: amazon-web-services serverless aws-sam aws-sam-cli