我在AWS上使用代码管道,代码构建和cloudformation。
我的流程是:
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
将导致错误。
答案 0 :(得分:3)
这只是一个替代的工作流程,但也许它将解决您的问题:
答案 1 :(得分:0)
如果您的CF堆栈中有很多lambda,那么一种快速的hack效果很好,因此您希望手动选择要从源代码更新的lambda,并拥有可以在多个运行时同样有效的lambda代码。只需更改堆栈中的运行时版本(例如从“运行时:nodejs8.10”更改为“运行时:nodejs10.x”即可。CodePipeline/ CloudFormation只会更新该函数。