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

使用AWS Wrangler调用Athena查询时遇BucketExists WaiterError求助

Athena查询报错:WaiterError: Waiter BucketExists failed: Max attempts exceeded

我用以下Python代码通过Athena查询数据:

import boto3 
import awswrangler as wr

sessAWS_Test = boto3.session.Session(
    aws_access_key_id = 'id',
    aws_secret_access_key = 'key',
    region_name = 'region used'
)

strQuery = """select *
from raw_data
where year like '2023' and month like '03'
limit 100
"""
wr.athena.read_sql_query(strQuery, database = 'raw_data', boto3_session = sessAWS_Test, 
                         ctas_approach=False)

执行最后一行代码时触发错误:

WaiterError: Waiter BucketExists failed: Max attempts exceeded. Previously accepted state: Matched expected HTTP status code: 404

当前使用的IAM用户权限配置如下:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject*",
                "s3:Get*",
                "athena:StartQueryExecution",
                "athena:StopQueryExecution",
                "athena:GetQueryExecution",
                "athena:GetQueryResults"
            ],
            "Resource": [
                "arn:aws:s3:::bucket_to_write_results",
                "arn:aws:s3:::bucket_to_write_results/*",
                "arn:aws:athena:region:id:workgroup/workgroup_name"
            ]
        }
    ]
}

我已经排查过区域指定问题(代码中已带区域Session),其他非S3相关的错误案例也无法解决问题,特此求助。


可能的原因及解决办法

1. 结果存储桶不存在

确认S3控制台中bucket_to_write_results是否存在:

  • 若不存在,直接创建该桶,注意桶名全局唯一,且桶的区域要和代码中region_name指定的区域一致。

2. IAM权限缺少桶列表权限

检查桶是否存在需要s3:ListBucket权限,原权限中的s3:Get*不包含该权限,需更新IAM策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject*",
                "s3:Get*",
                "s3:ListBucket",
                "athena:StartQueryExecution",
                "athena:StopQueryExecution",
                "athena:GetQueryExecution",
                "athena:GetQueryResults"
            ],
            "Resource": [
                "arn:aws:s3:::bucket_to_write_results",
                "arn:aws:s3:::bucket_to_write_results/*",
                "arn:aws:athena:region:id:workgroup/workgroup_name"
            ]
        }
    ]
}

3. 显式指定查询结果输出路径

awswrangler可能默认使用Athena工作流配置的结果存储桶,若该桶和权限中指定的桶不一致,需在read_sql_query中显式指定s3_output参数:

wr.athena.read_sql_query(
    strQuery, 
    database='raw_data', 
    boto3_session=sessAWS_Test, 
    ctas_approach=False,
    s3_output='s3://bucket_to_write_results/athena-query-results/'
)

4. 桶区域与Session区域不匹配

S3桶是区域资源,若创建桶时指定的区域和代码中region_name不一致,会导致无法访问。确认桶的区域和Session区域一致,若不一致,要么修改Session的region_name,要么重新创建对应区域的桶。

内容的提问来源于stack exchange,提问作者ricardov-DB

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 08:12:33