【问题标题】:How to update Lambda code defined/deployed in AWS SAM/CodePipeline?如何更新在 AWS SAM/CodePipeline 中定义/部署的 Lambda 代码?
【发布时间】: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


【解决方案1】:

请查看此页面:

https://docs.aws.amazon.com/codepipeline/latest/userguide/tutorials-serverlessrepo-auto-publish.html

对我来说,“第 4 步:创建发布操作”似乎是一种不同的方法,只需在管道中添加另一个步骤来发布它,而不是监视 S3。

但我还没试过。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-13
    • 2016-09-20
    • 2021-01-24
    • 1970-01-01
    • 2020-06-03
    • 2022-01-06
    • 1970-01-01
    • 2021-04-08
    相关资源
    最近更新 更多