【发布时间】: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://<bucket-name>/<file-name> 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