Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 如果lambda代码上载到S3,如何更新lambda函数代码_Amazon Web Services_Amazon S3_Aws Lambda_Amazon Cloudformation - Fatal编程技术网

Amazon web services 如果lambda代码上载到S3,如何更新lambda函数代码

Amazon web services 如果lambda代码上载到S3,如何更新lambda函数代码,amazon-web-services,amazon-s3,aws-lambda,amazon-cloudformation,Amazon Web Services,Amazon S3,Aws Lambda,Amazon Cloudformation,lambda函数代码(zip文件)当前正在从我的S3存储桶中获取。但是,在我更改代码并用更新的代码替换原始zip文件,然后运行更新堆栈之后,lambda函数代码在lambda控制台中似乎没有更改 有什么办法使它起作用吗 我的json模板 { “AWSTemplateFormatVersion”:“2010-09-09”, “参数”:{ “存储桶”:{ “类型”:“字符串”, “默认值”:“myBucket” } }, “资源”:{ “s3BucketImageStorage”:{ “类型”:“A

lambda函数代码(zip文件)当前正在从我的S3存储桶中获取。但是,在我更改代码并用更新的代码替换原始zip文件,然后运行更新堆栈之后,lambda函数代码在lambda控制台中似乎没有更改

有什么办法使它起作用吗

我的json模板

{
“AWSTemplateFormatVersion”:“2010-09-09”,
“参数”:{
“存储桶”:{
“类型”:“字符串”,
“默认值”:“myBucket”
}
},
“资源”:{
“s3BucketImageStorage”:{
“类型”:“AWS::S3::Bucket”,
“财产”:{
“BucketName”:{
“Ref”:“storageS3Bucket”
}
}
},
“getBannerHandler”:{
“类型”:“AWS::Lambda::Function”,
“财产”:{
“FunctionName”:“getBanner”,
“Handler”:“getBanner.Handler”,
“作用”:{
“Fn::导入值”:{
“Fn::Sub:“${RolesStack}-lambdarolarn”
}
},
“代码”:{
“S3Bucket”:{
“Ref”:“HandlerCodeS3Bucket”
},
“S3Key”:“getBanner.zip”
},
“运行时”:“nodejs12.x”
}
}
}
}
您几乎没有选择:

  • 向lambda zip文件名添加文件版本或git commit散列,以便在执行CloudFormation更新堆栈时,将新的zip文件名作为参数传递

  • 或者使用awscli直接更新lambda函数,但最好先删除zip文件,然后再上载,以防在替换同一文件时使用相同的名称,从而避免S3最终的一致性


代替Git提交哈希,考虑代码的MD5哈希。这样,代码只会在代码更改时重新部署,而不是在每次git提交时重新部署。除非您使用mono repo,否则git哈希也只会在labmda代码更改时更改,并且更容易获取