【问题标题】:How do I update AWS Lambda function using CloudFormation template如何使用 CloudFormation 模板更新 AWS Lambda 函数
【发布时间】:2022-01-05 11:19:44
【问题描述】:

我想使用 CloudFormation 模板部署和更新我的 lambda 函数代码。

我的部署工作流程是:

  1. 将我的 lambda 函数代码压缩到一个名为 Lambda 的 zip 文件中
  2. 启用名为 LambdaS3 的 s3 存储桶的 s3 版本控制
  3. 将 zip 文件上传到名为 LambdaS3 的 s3 存储桶中
  4. 将 CloudFormation 模板CFtemplate 如下上传到 s3bucket LambdaS3
  5. 通过输入“LambdaS3”作为参数LambdaS3 创建 CloudFormation 堆栈, “Lambda”作为参数Lambdafilename,压缩文件的版本作为参数LambdafileVersion

我的 lambda 代码更新工作流程是:

  1. 将我更新的 lambda 函数代码压缩到一个名为 Lambda 的 zip 文件中
  2. 将更新后的 zip 文件上传到名为 LambdaS3 的 s3 存储桶中
  3. 通过输入 zip 文件的更新版本作为参数 LambdafileVersion 来更新 CloudFormation 堆栈
  • 我的预期:部署和更新会成功
  • 实际结果:从 AWS 获取消息“创建此更改集时出错 提交的信息不包含更改。提交不同的信息以创建更改集。”在更新堆栈期间,部署成功时。

我的模板如下

AWSTemplateFormatVersion: "2010-09-09"
Metadata: ""
Description: ""
Parameters:

  LambdaS3:
    Description: Api Gateway Authorizer Lambda S3Bucket Name
    Type: String

  Lambdafilename:
    Description: Api Gateway Authorizer Lambda file Name (Latest)
    Type: String

  LambdafileVersion:
    Description: Lambda zip file version
    Type: String

Transform: AWS::Serverless-2016-10-31

Resources:
  LambdaFunction:
    DeletionPolicy: "Delete"
    Type: "AWS::Serverless::Function"
    Properties:
      Description: ""
      FunctionName: "LambdaFunction"
      Handler: "lambda_function.lambda_handler"
      CodeUri:
        Bucket: !Ref LambdaS3
        Key: !Sub '${Lambdafilename}.zip'
        Version: !Ref LambdafileVersion
      MemorySize: 512
      Role: !GetAtt IAMRole2.Arn
      Runtime: "python3.8"
      Timeout: 20
      Tracing: "PassThrough"
      AutoPublishAlias: live
      DeploymentPreference:
        Type: Linear10PercentEvery10Minutes

【问题讨论】:

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


    【解决方案1】:

    这不起作用,因为您使用的是 CodeDeploy。如果您想按照自己尝试的方式更新函数,则必须从代码中删除以下内容:

          AutoPublishAlias: live
          DeploymentPreference:
            Type: Linear10PercentEvery10Minutes
    

    【讨论】:

    • 感谢您的帮助!我现在可以更新代码了!但是AutoPublishAlias: live 可以在我试用后保留。 CodeDeploy 是否有任何原因无法合并到我的模板中?
    • @KenLEE 我不确定 CodeDeploy。你可以提出新的问题。接受我的回答这个和以前的一个,将不胜感激。
    • 那你怎么看这个解决方案(去掉这两个属性)? (我只是好奇)
    猜你喜欢
    • 1970-01-01
    • 2018-10-02
    • 2021-03-27
    • 2019-07-12
    • 2019-10-30
    • 1970-01-01
    • 2018-05-19
    • 2019-01-17
    • 2020-08-17
    相关资源
    最近更新 更多