使用AWS Data Wrangler读取Athena数据出现BucketExists等待器错误如何解决
报错根因
该报错是AWS Data Wrangler的高频常见问题,触发原因是执行Athena查询时需要S3桶存放临时查询结果,你的代码未显式指定输出路径,SDK自动检索默认桶时,检测到桶不存在(返回404状态码),重试次数耗尽后抛出异常。
WaiterError: Waiter BucketExists failed: Max attempts exceeded. Previously accepted state: Matched expected HTTP status code: 404
修复方案
方案1:调用时显式指定输出路径
直接在read_sql_query方法中传入有权限访问的S3路径即可,修改后的代码如下:
import awswrangler as wr import pandas as pd df = wr.athena.read_sql_query( sql='select * from ath_bi_orders limit 10', database='default', s3_output='s3://替换为你的S3桶名/自定义结果存放路径/' )
注:路径末尾的斜杠可加可不加,确保S3桶和Athena在同一AWS区域即可
方案2:全局配置默认输出路径
如果有多条Athena查询需求,可以提前设置全局配置,后续所有查询不需要重复传参:
import awswrangler as wr import pandas as pd # 全局配置,只需设置一次 wr.config.athena_output_location = "s3://替换为你的S3桶名/自定义结果存放路径/" # 原代码可直接运行 df = wr.athena.read_sql_query('select * from ath_bi_orders limit 10', database='default')
异常排查
如果配置路径后仍报错,检查以下两项:
- 当前使用的IAM身份是否具备目标S3桶的
s3:GetObject、s3:PutObject、s3:ListBucket权限 - 目标S3桶的区域是否和Athena服务的所属区域一致,跨区域访问会触发桶检测失败
内容的提问来源于stack exchange,提问作者user16934888
相关产品推荐
相关产品推荐

