[英]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.