【发布时间】:2018-05-05 16:37:53
【问题描述】:
我正在使用 cloudformation 来创建我的 lambda 函数,其中包含启用版本控制的 S3Bucket 中的代码。
"MYLAMBDA": {
"Type": "AWS::Lambda::Function",
"Properties": {
"FunctionName": {
"Fn::Sub": "My-Lambda-${StageName}"
},
"Code": {
"S3Bucket": {
"Fn::Sub": "${S3BucketName}"
},
"S3Key": {
"Fn::Sub": "${artifact}.zip"
},
"S3ObjectVersion": "1e8Oasedk6sDZu6y01tioj8X._tAl3N"
},
"Handler": "streams.lambda_handler",
"Runtime": "python3.6",
"Timeout": "300",
"MemorySize": "512",
"Role": {
"Fn::GetAtt": [
"LambdaExecutionRole",
"Arn"
]
}
}
}
lambda 函数创建成功。当我将新的工件 zip 文件复制到 s3bucket 时,会使用新版本的“S3ObjectVersion”字符串创建文件的新版本。但是 lambda 函数代码仍然使用旧版本。
aws cloudformation 的文档清楚地说明了以下内容
更新源代码位于 Amazon S3 中的 Lambda 函数 存储桶,您必须通过更新 S3Bucket、S3Key 或 S3ObjectVersion 属性。单独更新源代码不会 更新函数。
是否有额外的触发事件,我需要创建以更新代码?
【问题讨论】:
-
我也有类似的问题,你找到解决办法了吗?
-
这里也一样。 Sam local 通过上传具有随机名称的工件并相应地修改模板来解决打包时的问题。不过,我不能使用它,因为嵌套模板尚不支持转换,而且我的 Lambda 是嵌套的。
-
我也有同样的问题。可以分享一下解决方法吗?
标签: aws-lambda amazon-cloudformation