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

如何高效导出S3桶内千万级文件的URL到文本文件?

高效导出S3桶百万级文件URL的方案

针对1000万份文件的场景,aws s3 ls s3://bucketname > out.txt绝对不是唯一方案,甚至不是最优选择——它输出的是包含日期、大小的完整列表,还要额外处理提取文件名再拼接URL,效率很低。下面是几种更高效的实现方式:

1. 用AWS CLI s3api直接生成URL

利用s3api list-objects-v2的query参数,直接在命令中拼接出S3文件的URL,无需后续处理:

aws s3api list-objects-v2 --bucket bucketname --query 'Contents[].{url: "https://bucketname.s3.amazonaws.com/" + Key}' --output text > s3_urls.txt
  • 优势:原生AWS工具,无需额外安装;直接输出纯URL,一步到位;自动处理分页,无需手动拆分请求。
  • 区域适配:如果你的桶不在us-east-1区域,需要调整URL的区域后缀,比如替换成https://bucketname.s3.REGION.amazonaws.com/,也可以动态获取当前CLI配置的区域:
    aws s3api list-objects-v2 --bucket bucketname --query 'Contents[].{url: "https://bucketname.s3.'$(aws configure get region)'.amazonaws.com/" + Key}' --output text > s3_urls.txt
    

2. 用第三方工具提升性能

处理千万级文件时,原生AWS CLI的速度可能不够理想,可以用s5cmd(Go语言开发的高性能S3工具),它的列表速度比AWS CLI快3-5倍:

  1. 先安装s5cmd(根据系统版本下载对应二进制包即可)
  2. 执行命令生成URL:
s5cmd ls s3://bucketname/ | awk '{print "https://bucketname.s3.amazonaws.com/"$4}' > s3_urls.txt
  • 说明:s5cmd ls输出的第四列是文件的Key(路径),通过awk直接拼接成完整URL。

3. 优化AWS CLI的并行性能

如果坚持用原生AWS CLI,可以调整并发请求数来加快列表速度:

# 临时设置并发请求数为20(默认是10)
aws configure set default.s3.max_concurrent_requests 20
# 再执行之前的s3api命令
aws s3api list-objects-v2 --bucket bucketname --query 'Contents[].{url: "https://bucketname.s3.amazonaws.com/" + Key}' --output text > s3_urls.txt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 11:02:48