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

使用boto3+Python列举S3文件时Glue作业报NoSuchBucket错误如何解决

问题解决办法

错误根因

你混淆了S3的桶名(Bucket)和前缀(Prefix)参数:

  • 目标路径s3://madl-temp/maxValue/中,madl-temp才是桶名,maxValue/是需要查询的路径前缀
  • 原代码里把Bucket参数填成了maxValue,自然会报NoSuchBucket的错误

修正后的完整代码

按需求实现判断路径下是否存在parquet文件的逻辑:

import boto3

s3 = boto3.client('s3')
bucket_name = 'madl-temp'
prefix = 'maxValue/'
has_parquet = False

# 列举指定前缀下的对象
response = s3.list_objects_v2(Bucket=bucket_name, Prefix=prefix)

# 检查是否有后缀为.parquet的文件
if 'Contents' in response:
    for obj in response['Contents']:
        if obj['Key'].endswith('.parquet'):
            has_parquet = True
            break

maxValue = has_parquet

注意:如果路径下文件超过1000个,list_objects_v2会返回分页结果,需要处理NextContinuationToken循环拉取所有对象,避免漏判。

Glue作业额外注意事项

  • 确认Glue作业关联的IAM角色拥有s3:ListBucket权限,对应资源要包含arn:aws:s3:::madl-temp
  • 如果桶在非默认区域,初始化boto3客户端时要指定区域参数,比如boto3.client('s3', region_name='us-east-1')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 03:45:02