【发布时间】:2019-01-23 07:08:51
【问题描述】:
我在 AWS 上使用 codepipeline、codebuild 和 cloudformation。
我的流程是:
- 将提交推送到 github,这会触发代码管道
- Codebuild 将 lambda 函数上传(压缩)到 S3 存储桶
- Cloudformation 配置 lambda 函数
Cloudformation(简化版):
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
问题:当我更新 lambda 函数的代码时(此新代码在代码构建期间被压缩并上传到 S3 存储桶),更改不会部署到现有的 lambda 函数。
更新源代码位于 Amazon S3 中的 Lambda 函数 存储桶,您必须通过更新 S3Bucket、S3Key 或 S3ObjectVersion 属性。单独更新源代码不会 更新函数。
问题:有没有办法告诉 Cloudformation 使用存储在 S3 中的最新版本的代码?使用S3ObjectVersion: Latest 将导致错误。
【问题讨论】:
-
嗨,我也对同一个用例感到震惊。您是否能够找出
S3ObjectVersion的值以便 lambda 获得最新的 s3 zip 文件? -
@Private 不幸的是没有。
-
好的,感谢您的回复。我也在aws论坛上问过同样的问题,希望我能得到任何积极的回应。
-
@Private 如果您找到解决方案,请考虑分享:-)
-
当然。我会分享..
标签: amazon-web-services amazon-s3 aws-lambda amazon-cloudformation