微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AWS 云形成 |如何配置 Lambda 以使用 S3 存储桶中的最新代码

如何解决AWS 云形成 |如何配置 Lambda 以使用 S3 存储桶中的最新代码


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 函数时。

解决方法

如果您将新代码部署到具有相同键的对象,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 等自动化工具来处理这些事情

,

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。