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

Amazon Athena查询Glue Catalog部分表报S3路径访问被拒绝错误

Athena 查询部分Glue表触发S3权限拒绝问题排查方案

触发的报错信息如下:

Error opening Hive split s3://test/sample/run-1-part-r-03 (offset=0, length=1156) using org.apache.hadoop.mapred.TextInputFormat: Permission denied on S3 path: s3://test/sample/run-1-part-r-03

该报错本质是Athena执行查询所用的IAM身份,没有权限访问故障表对应的S3底层存储对象,部分表可正常查询说明Athena基础服务权限正常,可按照以下步骤排查:

  • 第一步:核对IAM权限覆盖范围
    检查你为Athena配置的IAM角色/用户的权限策略,确认是否同时包含以下权限:
    • 针对故障表S3前缀(本例中为s3://test/sample/*)的s3:GetObject权限
    • 针对故障表所属S3桶(本例中为s3://test)的s3:ListBucket权限
      很多场景下配置权限时只覆盖了正常表的S3前缀,遗漏了故障表的路径,会出现部分表查询失败的问题。如果故障表的S3对象使用KMS加密,还需要额外给Athena身份授予对应KMS密钥的kms:Decrypt权限。
  • 第二步:检查S3对象所有权与ACL
    如果故障表的S3对象是其他AWS账号跨账号上传的,默认对象ACL仅允许上传方访问,哪怕本账号有桶级权限也会被拒绝。可以查看报错S3对象的访问控制列表,确认本账号是否有读取权限:
    • 如果是跨账号上传场景,可要求上传方在上传时设置ACL为bucket-owner-full-control
    • 也可以直接配置S3桶的对象所有权规则为「桶拥有者强制执行」,自动将所有桶内对象的所有权归属于桶所属账号
  • 第三步:排查Lake Formation权限限制
    如果你开启了AWS Lake Formation管理Glue Catalog,仅配置IAM权限不足以访问数据,需要额外在Lake Formation控制台完成两项配置:
    • 将故障表对应的S3路径注册为Lake Formation的数据湖位置
    • 给Athena所用的身份授予故障表的SELECT权限,以及对应S3路径的数据位置访问权限
  • 第四步:排查上层访问限制
    检查是否存在更高层级的访问控制拦截了请求:
    • 查看S3桶策略、VPC端点策略,是否有规则禁止Athena身份访问故障路径
    • 查看AWS组织的服务控制策略(SCP),是否限制了对对应S3路径的访问权限
  • 验证方法
    排查修改完成后,可以使用Athena对应的IAM身份执行AWS CLI命令验证S3访问能力:
    aws s3 cp s3://test/sample/run-1-part-r-03 -
    
    若命令可正常返回对象内容,再执行Athena查询即可恢复正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:57:03