AWS Athena查询Glue数据目录已收录S3文件时报错如何解决?
结论
该报错与.csv.gz文件格式无关,本质是S3访问权限配置错误导致的。AWS Athena原生支持直接查询gzip压缩的CSV格式文件,无需额外做格式适配或转换。
报错根因
Glue爬虫运行时使用的是独立配置的IAM角色,该角色已被授予对应S3路径的读取权限,因此可以正常扫描文件结构、生成数据目录表。而执行Athena查询时使用的是当前操作的IAM身份(用户/角色),该身份未被授予对应S3对象的访问权限,因此触发权限拒绝错误。
修复方案
- 第一步:确认执行Athena查询时使用的IAM身份ARN
- 第二步:为该身份添加包含以下权限的IAM策略:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetObject" ], "Resource": [ "arn:aws:s3:::<替换为你的S3桶名>", "arn:aws:s3:::<替换为你的S3桶名>/*" ] } ] }
- 第三步:检查额外权限配置:
- 若S3桶配置了桶策略,需确认桶策略没有拦截该身份的访问请求
- 若S3对象使用KMS加密,需为该身份添加对应KMS密钥的
kms:Decrypt权限 - 确认Athena查询结果存储桶也为该身份开放了读写权限
验证方式
使用当前操作身份执行AWS CLI命令验证S3访问权限:aws s3 cp s3://<替换为你的S3桶名>/<替换为文件路径>/FILENAME.csv.gz -
若命令可正常返回文件内容,说明权限配置生效,重新执行Athena查询即可正常返回结果。
内容的提问来源于stack exchange,提问作者Sandeep Mehra
相关产品推荐
相关产品推荐

