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 s3 CloudFormation脚本卡在更新\回滚\中失败,AWSLambdainernal需要GetObject权限。如何解决?_Amazon S3_Aws Lambda_Amazon Cloudformation - Fatal编程技术网

Amazon s3 CloudFormation脚本卡在更新\回滚\中失败,AWSLambdainernal需要GetObject权限。如何解决?

Amazon s3 CloudFormation脚本卡在更新\回滚\中失败,AWSLambdainernal需要GetObject权限。如何解决?,amazon-s3,aws-lambda,amazon-cloudformation,Amazon S3,Aws Lambda,Amazon Cloudformation,我有一个CloudFormation堆栈处于更新\回滚\失败的状态 我看到的与创建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.

我有一个CloudFormation堆栈处于更新\回滚\失败的状态

我看到的与创建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>)
您的访问已被S3拒绝,请确保您的请求凭据
有权获取/]的对象。S3
错误代码:AccessDenied。S3错误消息:访问被拒绝(服务:
AWSLambdaInternal;状态代码:403;错误代码:AccessDeniedException;
请求ID:)
我仔细检查了与堆栈关联的IAM角色是否具有正确的S3权限,但我认为引发权限错误的不是CloudFormation。我认为这是一个非常好的内部服务

我有十几个其他堆栈使用相同的IAM角色,我没有这个问题。我甚至尝试公开特定的S3对象,看看这是否是问题所在。但我只能假设AWSLambdaInternal没有S3 GetObject权限。我甚至尝试将lambda.awsamazon.com的sts:AssumeRole权限添加到CloudFormation脚本使用的IAM角色中,但这并没有改变任何事情


堆栈工作正常,直到我决定将它创建的Lambda函数移动到VPC中。

实际上,状态
更新\u回滚\u失败
意味着不仅更新失败,而且回滚失败,这实际上是不应该发生的


您应该检查是否手动更改了
CloudFormation
管理的资源,如果您确定没有,请向
CloudFormation
支持部门报告您的问题。

您移动到VPC中的lambda函数--它是否有可能为您提供自定义的CloudFormation资源?因为当回滚失败时,通常是我自己做的事情——当我把自定义资源的lambda函数搞砸了,它失败了。如果有疑问,我通常会将自定义资源的删除操作设置为“无操作”,或者即使失败,也会使其始终报告成功(然后我必须手动删除资源)

如果lambda函数确实负责管理自定义资源,那么您应该1)将其移回原来的位置;2) 创建一个新的lambda函数,您知道该函数可以访问并且可以工作;3) 然后才切换到使用lambda函数


在CloudFormation的堆栈事件列表中,查看哪些资源更新失败。单个错误没有触发它的资源重要。

如何创建堆栈?能否共享Cloudformation模板?以下是Cloudformation脚本中处理Lambda的部分:
Lambda:Properties:CodeUri:s3:///环境:变量:SECRETSMANAGER:Ref:SecretsManagerName处理程序:index.Handler MemorySize:128角色:Fn::GetAtt:-LambdaRole-Arn运行时:nodejs8.10超时:30跟踪:直通类型:AWS::Serverless::Function
它不是自定义云信息资源。与此错误消息关联的CloudFormation资源只是一个普通的Lambda函数。甚至都不是Lambda@Edge.WhileAWS基本支持是免费的,他们不会帮助解决技术问题。