You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Lake Formation跨账户共享:目标账户Athena查询报S3权限错误

跨账户Lake Formation共享后Athena查询S3 Access Denied问题排查方案

1. 检查源账户A的S3桶跨账户权限

即使Lake Formation管理了数据权限,底层S3桶仍需配置桶策略允许目标账户B的相关角色访问。添加以下桶策略到账户A的目标S3桶中(替换占位符为实际值):

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::[账户B ID]:root"
            },
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::[桶名]",
                "arn:aws:s3:::[桶名]/[表数据路径]/*"
            ]
        }
    ]
}

如果仅允许特定角色访问,可将Principal替换为目标账户B的Athena执行角色ARN,而非账户root。

2. 源账户A中授予数据位置权限

Lake Formation需要明确授权跨账户访问底层S3数据路径,操作步骤:

  • 在账户A的Lake Formation控制台进入数据位置页面
  • 添加共享表所在的S3路径,点击授予
  • 选择外部账户,输入账户B的ID,授予SELECT(或业务所需的)权限

3. 验证目标账户B的Athena执行角色权限

  • 确保Athena执行角色拥有lakeformation:GetDataAccess的IAM权限(可通过IAM策略添加)
  • 检查该角色在Lake Formation中是否被授予资源链接数据库/表的SELECT权限(SUPER为管理权限,查询仍需明确的SELECT权限)

4. 确认源表的Lake Formation注册状态

如果源账户A中的表是通过IAM(而非Lake Formation)创建的,需先将表注册到Lake Formation:

  • 在账户A的Lake Formation控制台找到目标表,点击注册到Lake Formation
  • 完成注册后重新向账户B共享权限

5. 资源链接权限验证

在账户B的Lake Formation控制台检查资源链接数据库的权限:

  • 确认授予用户/角色的权限包含具体表的SELECT权限,而非仅数据库级权限
  • 若有新增表,需重新同步共享权限或手动添加表权限

内容的提问来源于stack exchange,提问作者Adam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 17:02:25