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

使用d6tpipe从AWS S3下载目录如何配置参数及解决报错

问题解答

1. S3配置字段对应规则

你给出的S3路径结构为s3://<桶名>/<对象前缀>,对应配置项的两个字段填写规则如下:

  • name:为本地管道的自定义标识,你当前填写的folder_of_interest完全可用,仅需保证本地唯一即可,无需修改。
  • location:需填入完整的S3资源路径,即你现有的s3://parent_filepath/foo/bar/folder_of_interest/。

2. 报错修复方案

你遇到的AttributeError报错是因为当前安装的d6tpipe版本较新,旧版本的create_pipe_with_remote接口已被移除,有两种解决方式可选:

方案1:回退d6tpipe到兼容版本

执行命令安装旧版本d6tpipe,即可直接运行你现有代码:

pip install d6tpipe==0.2.5

方案2:使用AWS官方boto3库实现(更稳定,推荐)

d6tpipe属于第三方封装库,版本迭代兼容性较差,直接使用官方boto3库实现递归下载更稳妥,操作步骤如下:

  1. 安装boto3:
pip install boto3
  1. 使用以下代码实现S3文件夹递归下载,直接填入你的凭证即可运行:
import boto3
import os

# 初始化S3客户端
s3_client = boto3.client(
    's3',
    aws_access_key_id='替换为你的AWS Access Key ID',
    aws_secret_access_key='替换为你的AWS Secret Access Key'
)

# 资源配置
bucket_name = 'parent_filepath'
s3_folder_prefix = 'foo/bar/folder_of_interest/'
local_save_path = './s3_downloads/'

# 创建本地存储目录
os.makedirs(local_save_path, exist_ok=True)

# 递归下载函数
def recursive_download_s3(bucket, prefix, local_dir):
    paginator = s3_client.get_paginator('list_objects_v2')
    for page in paginator.paginate(Bucket=bucket, Prefix=prefix):
        if 'Contents' not in page:
            return
        for obj in page['Contents']:
            # 跳过S3的空文件夹标记
            if obj['Key'].endswith('/'):
                continue
            # 计算本地文件相对路径
            relative_file_path = obj['Key'][len(prefix):]
            local_file_full_path = os.path.join(local_dir, relative_file_path)
            # 生成本地子目录
            os.makedirs(os.path.dirname(local_file_full_path), exist_ok=True)
            # 下载文件
            s3_client.download_file(bucket, obj['Key'], local_file_full_path)

# 执行下载
recursive_download_s3(bucket_name, s3_folder_prefix, local_save_path)
print("S3文件夹递归下载完成")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 08:15:00