我的CloudFormation堆栈处于UPDATE_ROLLBACK_FAILED状态。
我看到的与Lambda创建相关的错误消息是:
Your access has been denied by S3, please make sure your request credentials
have permission to GetObject for <codepipeline-bucket-name>/<file-name>]. S3
Error Code: AccessDenied. S3 Error Message: Access Denied (Service:
AWSLambdaInternal; Status Code: 403; Error Code: AccessDeniedException;
Request ID: <request-id>)
我已经仔细检查了与堆栈关联的IAM角色是否具有正确的S3权限,但是我不认为是CloudFormation引发了权限错误。我认为这是AWSLambdaInternal服务。
我还有其他十多个使用相同IAM角色的堆栈,但我没有遇到这个问题。我什至尝试将特定的S3对象公开,以查看是否可能是问题所在。但是我只能假定AWSLambdaInternal没有S3 GetObject权限。我什至尝试将lambda.awsamazon.com的sts:AssumeRole权限添加到CloudFormation脚本使用的IAM角色,但这并没有改变。
在我决定将其创建的Lambda函数移至VPC之前,堆栈工作正常。
答案 0 :(得分:1)
实际上,状态UPDATE_ROLLBACK_FAILED
意味着您不仅更新失败,而且回滚失败,这实际上是不应该发生的。
您应该检查是否手动更改了CloudFormation
个托管资源中的任何一个,以及是否确定没有-向CloudFormation
支持人员报告问题。
答案 1 :(得分:0)
您移入VPC的lambda函数-难道不是有机会为您提供自定义CloudFormation资源吗?因为回滚失败对我来说通常是我自己的事-当我弄乱了自定义资源的lambda函数而失败时。如有疑问,我通常将自定义资源的删除操作设为无操作,或者使它始终报告成功(即使失败)(然后我必须手动删除资源)。
如果lambda函数确实负责管理自定义资源,则应1)将其移回原处; 2)创建一个新的lambda函数,您将知道该函数可以访问并且可以使用; 3)然后再切换到使用lambda函数。
在CloudFormation的堆栈事件列表中,查看哪些资源更新失败。单个错误的重要性不如为其触发的资源重要。