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

AWS Wrangler读取指定S3文件列表报错求助

解决建议

1. 核对文件路径的准确性

  • 确认生成的目标文件路径是完整的S3 URI格式(例如s3://br-candles/br4.csv),手动拼接时容易遗漏s3://前缀,或者桶名、文件名拼写/大小写出错(S3路径区分大小写)。
  • 先打印要读取的文件路径列表(比如print(target_files)),和S3控制台里的实际文件路径做对比,确认完全一致。

2. 验证目标文件是否真实存在

  • 直接在AWS S3控制台搜索报错的路径(s3://br-candles/br4.csv),确认文件没有被误删、路径是否正确。
  • 检查排序逻辑是否符合预期:如果是按文件名排序,可能因命名规则问题导致顺序错误(比如br10.csv会排在br2.csv前面),建议改用文件的LastModified时间排序,更贴合“最新文件”的需求。

3. 调整wr.s3.read_csv的调用方式

  • 读取指定文件时,必须传入字符串列表格式的路径,即使只有单个文件也要用列表包裹,示例:
    target_files = ["s3://br-candles/br4.csv", "s3://br-candles/br1.csv"]
    df = wr.s3.read_csv(target_files)
    
  • 不要使用通配符(比如s3://br-candles/*.csv),直接传入精确的文件路径列表。

4. 排查权限与日志

  • 虽然之前读整个桶正常,但可以确认Lambda的IAM角色是否有s3:GetObject权限(桶级权限通常已覆盖,但需排除桶策略的特殊限制)。
  • 在代码中添加异常捕获,打印详细错误信息,方便定位问题:
    import traceback
    try:
        df = wr.s3.read_csv(target_files)
    except Exception as e:
        print(f"读取文件失败: {str(e)}")
        print(traceback.format_exc())
    

5. 修正文件列表的获取与排序逻辑

  • 确保获取的文件列表包含所有预期的CSV文件,比如用boto3获取时过滤后缀:
    import boto3
    s3 = boto3.client('s3')
    response = s3.list_objects_v2(Bucket='br-candles')
    # 过滤出CSV文件
    csv_files = [obj for obj in response['Contents'] if obj['Key'].endswith('.csv')]
    # 按最后修改时间降序排序,取最新和倒数第4个
    sorted_files = sorted(csv_files, key=lambda x: x['LastModified'], reverse=True)
    target_uris = [f"s3://br-candles/{obj['Key']}" for obj in [sorted_files[0], sorted_files[3]]]
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 03:15:12