【问题标题】:CloudFormation script stuck in UPDATE_ROLLBACK_FAILED, AWSLambdaInternal needs GetObject permissions. How to resolve?CloudFormation 脚本卡在 UPDATE_ROLLBACK_FAILED 中,AWSLambdaInternal 需要 GetObject 权限。如何解决?
【发布时间】:2019-01-18 13:42:32
【问题描述】:

我有一个 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。我认为是 AWSLambda 内部服务。

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

在我决定将它创建的 Lambda 函数移动到 VPC 之前,堆栈一直运行良好。

【问题讨论】:

  • 你是如何创建堆栈的?可以分享一下 Cloudformation 模板吗?
  • 这是处理 Lambda 的 CloudFormation 脚本部分:Lambda: Properties: CodeUri: s3://&lt;bucket-name&gt;/&lt;file-name&gt; Environment: Variables: SECRETSMANAGER: Ref: SecretsManagerName Handler: index.handler MemorySize: 128 Role: Fn::GetAtt: - LambdaRole - Arn Runtime: nodejs8.10 Timeout: 30 Tracing: PassThrough Type: AWS::Serverless::Function

标签: amazon-s3 aws-lambda amazon-cloudformation


【解决方案1】:

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

您应该检查您是否手动更改了任何 CloudFormation 托管资源,如果您确定没有 - 将您的问题报告给 CloudFormation 支持。

【讨论】:

  • 虽然 AWS 基本支持是免费的,但他们不会协助解决技术问题。
【解决方案2】:

您移到 VPC 中的 lambda 函数 - 它不会为您提供自定义 CloudFormation 资源吗?因为当回滚对我来说失败时,通常是我自己做的——当我弄乱了自定义资源的 lambda 函数并且它失败了。如有疑问,我通常会将自定义资源的删除操作设为无操作,或者即使失败也始终报告成功(然后我必须手动删除资源)。

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

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

【讨论】:

  • 它不是自定义 CloudFormation 资源。与此错误消息关联的 CloudFormation 资源只是一个普通的 Lambda 函数。它甚至不是 Lambda@Edge。
猜你喜欢
  • 2019-08-19
  • 2021-10-03
  • 2018-03-04
  • 1970-01-01
  • 1970-01-01
  • 2014-12-24
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
相关资源
最近更新 更多