问题描述
当前从我的S3存储桶中获取了lambda函数代码(zip文件)。但是,在更改代码并将原始zip文件替换为更新的代码,然后运行update-stack之后,lambda函数代码在lambda控制台中似乎没有更改。
有什么办法可以使它工作?
我的json模板
{
"AWstemplateFormatVersion": "2010-09-09","Parameters": {
"storageS3Bucket": {
"Type": "String","Default": "myBucket"
}
},"Resources": {
"s3BucketimageStorage":{
"Type" : "AWS::S3::Bucket","Properties" : {
"BucketName" : {
"Ref": "storageS3Bucket"
}
}
},"getBannerHandler": {
"Type": "AWS::Lambda::Function","Properties": {
"FunctionName": "getBanner","Handler": "getBanner.handler","Role": {
"Fn::ImportValue": {
"Fn::Sub": "${Rolesstack}-LambdaRoleArn"
}
},"Code": {
"S3Bucket": {
"Ref": "HandlerCodeS3Bucket"
},"S3Key":"getBanner.zip"
},"Runtime": "nodejs12.x"
}
}
}
}
解决方法
您几乎没有选择:
-
向lambda zip文件名添加文件版本或git commit哈希,因此当您执行CloudFormation更新堆栈时,您会将新的zip文件名作为参数传递。
-
或者使用awscli直接更新lambda函数,但最好先删除zip文件,然后再上传,以防您要使用相同名称以避免替换相同文件时S3最终的一致性。