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

如何通过AWS CLI直接将Box.com文件传输至AWS S3存储桶?

问题解答

AWS CLI无法直接通过Box的URL将文件复制到S3,你之前执行的命令报错,原因有两点:

  1. aws s3 cp命令仅支持本地文件、S3对象或S3兼容存储之间的复制,不支持从第三方云存储的HTTP链接直接传输;
  2. 你使用的Box共享链接是网页访问链接,并非可直接读取的原始文件流链接,而且这类链接通常需要权限验证,AWS CLI无法处理Box的身份校验逻辑,所以会提示路径不存在。

针对你5万份文件的批量传输需求,推荐以下几种无需本地中转的方案:

方案1:用Box CLI + AWS CLI做流式传输

先安装并认证Box CLI,通过管道将Box文件的输出流直接传给AWS CLI,全程不落地文件:

# 替换<BOX_FILE_ID>为实际的Box文件ID,filename.laz为S3端的文件名
box file download --id <BOX_FILE_ID> --output - | aws s3 cp - s3://kyfromabove/elevation/LAZ/Phase1/filename.laz

如果是批量文件,可以写Shell/Python脚本循环遍历Box文件列表,逐个执行上述命令。

方案2:用AWS DataSync直接同步

AWS DataSync支持Box和S3之间的直接数据同步,是大规模文件迁移的最优选择:

  • 在AWS控制台创建DataSync任务,选择Box作为源存储、S3作为目标存储;
  • 完成Box的授权配置(需要在Box平台创建应用并生成凭据);
  • 设置同步规则(如文件过滤、增量同步策略)后启动任务,DataSync会自动处理传输、重试和进度跟踪。

方案3:编写自定义脚本(用SDK流式处理)

用Box SDK和AWS SDK编写脚本,直接获取Box文件流并上传到S3,适合需要自定义逻辑的场景,比如Python示例:

import boto3
from boxsdk import Client, OAuth2

# 初始化Box客户端(替换为你的Box凭据)
oauth = OAuth2(
    client_id='你的Box客户端ID',
    client_secret='你的Box客户端密钥',
    access_token='你的Box访问令牌',
)
box_client = Client(oauth)

# 初始化S3客户端
s3 = boto3.client('s3')

# 替换为实际的Box文件ID和S3目标路径
file_id = 'Box文件ID'
s3_key = 'elevation/LAZ/Phase1/filename.laz'

# 流式上传:从Box获取文件流,直接传到S3
with box_client.file(file_id).content_stream() as stream:
    s3.upload_fileobj(stream, 'kyfromabove', s3_key)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 09:35:19