【问题标题】:AWS Cloudformation | How to Configure Lambda to Use Latest Code in S3 BucketAWS 云形成 |如何配置 Lambda 以使用 S3 存储桶中的最新代码
【发布时间】:2021-07-29 01:02:45
【问题描述】:

Tests3bucketLambda: 
  Type: "AWS::Lambda::Function"
  Properties: 
    Code: 
      S3Bucket: TestS3Bucket
      S3Key: Tests3.zip
   FunctionName: "test-lambda-function"
   Handler: lambda-function-s3.lambda_handler
   Role: !GetAtt LambdaExecutionRole.Arn
   Runtime: python3.6
  


 

问题:当我在代码构建期间更新压缩并上传到 S3 存储桶的新代码时,但更改未部署到现有 lambda 函数。

【问题讨论】:

    标签: amazon-web-services amazon-s3 aws-lambda amazon-cloudformation


    【解决方案1】:

    如果您希望 lambda 自动获取最新代码,那么使用云形成是不可能的。

    为此,您可以将代码文件同步到 s3 存储桶,然后尝试这里提到的方法 How can AWS Lambda pick the latest versions of of the script from S3 。我能够实现它并在那里提到了解决方案。

    【讨论】:

      【解决方案2】:

      如果您将新代码部署到具有相同密钥的对象,CF 不会将其视为更改,因为模板本身尚未修改。缓解这种情况的方法很少。

      1. 使用存储桶版本控制并提供对象版本以及对象键:https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-code.html

        Code: 
          S3Bucket: TestS3Bucket
          S3Key: Tests3.zip
          S3ObjectVersion: blablabla....
        
      2. 在每次部署时修改您的对象键,例如时间戳

        Code: 
          S3Bucket: TestS3Bucket
          S3Key: Tests3_2021-05-06T17:15:55+00:00.zip
        
      3. 使用 Terraform 或 AWS CDK 等自动化工具来处理这些事情

      【讨论】:

        猜你喜欢
        • 2019-01-23
        • 2020-01-26
        • 1970-01-01
        • 2018-05-05
        • 2017-09-21
        • 2020-03-14
        • 2020-11-02
        • 2017-12-25
        • 1970-01-01
        相关资源
        最近更新 更多