为什么aws lambda函数不能从s3桶中读取对象?

时间:2017-08-02 14:14:34

标签: amazon-web-services amazon-s3 aws-lambda

我正在尝试使用lambda函数交叉帐户从S3存储桶中读取对象,我已经为aws lambda添加了基于资源的策略来访问s3存储桶。

但是当我测试我的lambda函数时,我看到访问被拒绝错误 lambda函数IAM角色对s3资源具有完全访问权限

1 个答案:

答案 0 :(得分:1)

您的情况似乎是:

  • 使用角色的帐户A中的 AWS Lambda函数
  • 帐户B中的 Amazon S3广告管理

您需要授予帐户B的访问权限。 Lambda资源策略不起作用,因为它位于帐户A中(因此无法授予对帐户B中资源的访问权限)。

您只需在存储桶上使用存储桶策略即可授予对Lambda函数使用的角色的访问权限。该政策看起来类似于:

{
  "Id": "Policy1",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "GrantAccessToRole",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::my-bucket/*",
      "Principal": {
        "AWS": [
          "arn:aws:iam::1234567890:role/my-role"
        ]
      }
    }
  ]
}

修改策略以提供所需的访问权限(例如ListBucket)。

查看角色时,角色的ARN在IAM控制台中可见。