簡體   English   中英

如何更新在 AWS SAM/CodePipeline 中定義/部署的 Lambda 代碼?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM