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

如何使用AWS CLI从S3存储桶下载指定数量文件?含10个参数传递方法

我来帮你搞定这个问题!用AWS CLI下载指定数量的S3文件,其实可以分两步走:先筛选出你要的文件,再批量下载。下面给你两种实用方法,按需挑选就行~

方法1:用终端命令组合(适合Linux/macOS)

这种方法直接用AWS CLI结合终端工具,不用写脚本,快捷方便。假设你要下载s3://your-bucket-name/里的10个文件,执行下面的命令就行:

# 列出桶内所有非文件夹的文件,取前10个并下载到当前目录
aws s3 ls s3://your-bucket-name/ --recursive | grep -v "/$" | head -n 10 | awk '{print $4}' | xargs -I {} aws s3 cp s3://your-bucket-name/{} .

我给你拆解下每个部分的作用:

  • --recursive:遍历桶内所有层级的文件(包括子文件夹里的)
  • grep -v "/$":过滤掉文件夹(因为s3 ls输出的文件夹末尾会带/)
  • head -n 10:只保留前10个文件的条目
  • awk '{print $4}':从输出里提取文件名(s3 ls的格式是「日期 时间 大小 文件名」,第4列就是文件名)
  • xargs -I {}:把每个文件名替换到{}的位置,执行s3 cp命令完成下载

如果只想下载某个特定文件夹下的文件,把命令里的s3://your-bucket-name/改成s3://your-bucket-name/path/to/target/folder/就行。

方法2:用Python脚本(跨平台,更灵活)

如果是Windows系统,或者你需要更复杂的筛选逻辑(比如按修改时间排序下载),写个简单的Python脚本会更靠谱。步骤如下:

  1. 先安装boto3(AWS的Python SDK):
pip install boto3
  1. 新建一个脚本文件(比如s3_download_limit.py),复制下面的代码:
import boto3
import os

# 配置参数
bucket_name = "your-bucket-name"
max_download_count = 10
download_folder = "./s3_downloads"

# 创建下载目录(如果不存在)
os.makedirs(download_folder, exist_ok=True)

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

# 分页列出桶内文件(避免一次返回太多数据)
paginator = s3_client.get_paginator("list_objects_v2")
page_iterator = paginator.paginate(Bucket=bucket_name, Prefix="")  # Prefix填文件夹路径可筛选特定目录

downloaded_count = 0
for page in page_iterator:
    if "Contents" not in page:
        break  # 桶里没文件了,退出循环
    
    for obj in page["Contents"]:
        if downloaded_count >= max_download_count:
            break
        
        # 跳过文件夹对象
        if obj["Key"].endswith("/"):
            continue
        
        # 下载文件到指定目录,保留原文件名
        local_file_path = os.path.join(download_folder, os.path.basename(obj["Key"]))
        s3_client.download_file(bucket_name, obj["Key"], local_file_path)
        
        downloaded_count += 1
        print(f"已下载:{obj['Key']}")
    
    if downloaded_count >= max_download_count:
        break

print(f"\n完成!共下载{downloaded_count}个文件到{download_folder}")
  1. 修改脚本里的bucket_name、max_download_count等参数,然后运行脚本:
python s3_download_limit.py

这个脚本的好处是:

  • 自动处理S3的分页限制(一次最多返回1000个对象)
  • 可以轻松修改筛选逻辑(比如按文件修改时间排序,只下载最新的10个)
  • 跨平台,Windows、Linux、macOS都能用
额外小提示
  • 如果桶里的文件数量少于10个,两种方法都会自动下载所有存在的文件,不会报错
  • 要是想按「最新修改」的顺序下载10个文件,在方法1的s3 ls命令后加--sort-by lastmodified --reverse(--reverse是让最新的排在前面),然后再用head -n 10筛选就行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:53:04