让 AWS Athena 承担访问外部 S3 存储桶的角色

Have AWS Athena assume role for accessing external S3 bucket

我通过 Glue 在我的帐户中设置了一个 Athena table,它应该查询我朋友帐户中的数据。我的朋友创建了一个 IAM 角色,我可以假定它有权访问 S3 数据。

我的 Athena 查询出错,抱怨他们没有访问 S3 存储桶的权限。有没有办法让 Athena 承担这个角色,以便它可以进入 S3 存储桶?

目前无法通过 Athena 担任角色。 AWS 建议使用存储桶策略跨账户访问 s3 存储桶。

目前唯一可能的设置在 "Cross-account Permissions" 部分的 here 中进行了描述。

不需要启用跨帐户。

托管账户(账户 A)

  1. 拥有 Athena 政策/资源级别政策

  2. 创建角色(由另一个账户 B 承担)并附加在步骤 1 中创建的策略

  3. 更新可信实体:在另一个账户 B

    中包含 IAM 用户/角色
     {
       "Version": "2012-10-17",
       "Statement": [
         {
           "Effect": "Allow",
           "Principal": {
             "AWS": [
               "arn:aws:iam::Account B:user/User A"
             ]
           },
           "Action": "sts:AssumeRole",
           "Condition": {}
         }
       ]
     }
    

正在使用应用程序

  1. 创建策略

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "sts:AssumeRole",
                "Resource": [
                    "arn:aws:iam::Account A:role/Role Created in Step 2 as Hosting Account A"
                ]
            }
        ]
    }
    
  2. 将策略附加到用户