如何使用 CloudFormation 模板更新 AWS Lambda 函数

How do I update AWS Lambda function using CloudFormation template

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

我的部署工作流程是:

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

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

  1. 将我更新的 lambda 函数代码压缩到一个名为 Lambda
  2. 的 zip 文件中
  3. 将更新后的 zip 文件上传到名为 LambdaS3
  4. 的 s3 存储桶中
  5. 通过输入 zip 文件的更新版本作为参数来更新 CloudFormation 堆栈 LambdafileVersion

我的模板如下

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

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

      AutoPublishAlias: live
      DeploymentPreference:
        Type: Linear10PercentEvery10Minutes