代码之家  ›  专栏  ›  技术社区  ›  Vingtoft

AWS Cloudformation |将Lambda配置为在S3 Bucket中使用最新版本的代码

  •  2
  • Vingtoft  · 技术社区  · 6 年前

    我的流程是:

    1. Codebuild将lambda函数上传(压缩)到S3 bucket
    2. Cloudformation配置lambda函数

    CreateDoctorLambda:
        Type: AWS::Lambda::Function
        Properties:
          Runtime: python3.6
          Handler: lambda_function.lambda_handler
          Role:
            Fn::GetAtt:
              - LambdaExecutionRole
              - Arn
          Code:
              S3Bucket: !Ref LambdaFunctionS3Bucket
              S3Key: CreateDoctor.zip
              S3ObjectVersion: Latest <-- This value is invalid
    

    问题:

    根据 AWS documentation :

    更新源代码位于Amazon S3中的Lambda函数 bucket,必须通过更新S3Bucket、S3Key或 更新函数。

    问题: 有什么方法可以告诉Cloudformation使用存储在S3中的最新版本的代码吗?使用 S3ObjectVersion: Latest

    1 回复  |  直到 6 年前
        1
  •  3
  •   Gustavo Tavares    6 年前

    这只是一个可供选择的工作流,但也许它可以解决您的问题:

    1. 您必须配置codepipline或CodeBuild,以便在部署时(例如)为基于项目的项目生成不同的名称,而不是使用相同的名称保存项目;
    2. https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/continuous-delivery-codepipeline-parameter-override-functions.html )它将根据新代码重新部署函数。
        2
  •  0
  •   Robin Melhuish    6 年前

    如果您的CF堆栈中有很多lambda,那么您需要手动从源代码中选择要更新的lambda,并且lambda代码在多个运行时也同样可以正常工作,那么这是一个很好的快速方法。只需更改堆栈中的运行时版本(比如从“runtime:nodejs8.10”更改为“runtime:nodejs10.x”)。codepipline/CloudFormation将仅更新该函数。