繁体   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