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

S3存储桶全量Keys获取方法及免费账户容量限制咨询

解答:获取S3存储桶所有对象(Keys)及免费账户限制

一、如何获取存储桶内的所有Keys?

你提到的MaxKeys=1000是S3默认的单次返回对象上限——也就是说,一次请求最多返回1000个Keys。如果存储桶里的文件超过1000个,响应里的IsTruncated字段会是true,这时候就需要分页查询来拿到全部文件。下面是几种常用的实现方式:

1. 使用AWS CLI(最简单的方式)

直接用--recursive参数,CLI会自动帮你处理分页逻辑,不用手动管理标记:

aws s3 ls s3://gameexperiencesurvey/ --recursive

这个命令会遍历存储桶里的所有对象,输出每个对象的Key、大小和修改时间。

2. 使用AWS SDK(以Python boto3为例)

如果需要写代码处理,可以用SDK自带的分页器(Paginator),它会自动处理分页流程:

import boto3

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

# 创建分页器,指定list_objects_v2 API(推荐使用v2版本)
paginator = s3_client.get_paginator('list_objects_v2')

# 分页遍历存储桶内的对象
for page in paginator.paginate(Bucket='gameexperiencesurvey'):
    # 遍历当前页的所有对象,处理空内容的情况
    for obj in page.get('Contents', []):
        print(obj['Key'])

如果用旧版list_objects API,逻辑类似,只是分页标记用Marker和NextMarker,但更推荐v2版本的API。

3. 手动发送HTTP请求

如果不想用工具或SDK,手动请求需要按以下步骤操作:

  • 第一次请求:http://gameexperiencesurvey.s3.amazonaws.com/?max-keys=1000(省略max-keys参数的话,默认也是1000)
  • 检查响应XML里的IsTruncated值:
    • 如果是false,说明已经拿到全部Keys;
    • 如果是true,提取NextMarker(v1 API)或ContinuationToken(v2 API),在下一次请求里加上对应参数(比如http://gameexperiencesurvey.s3.amazonaws.com/?continuation-token=xxx),重复这个过程直到IsTruncated为false。

二、AWS S3免费账户的限制

关于AWS Free Tier(免费账户)的两个核心限制:

  • 存储容量上限:在注册后的前12个月,每月可以免费使用5GB的S3标准存储(是每月额度,不是累计5GB)。超出5GB的部分会按照S3的标准付费价格收取费用。
  • Keys(对象)数量:AWS S3对存储桶内的对象数量没有任何官方上限——不管是免费账户还是付费账户,你可以存储任意多的对象,只要它们的总大小不超过你的存储额度(免费用户就是每月5GB)。不过要注意,每个对象至少占用1字节,而且频繁的对象操作(比如创建、删除)可能会产生额外的请求费用,免费套餐里每月有20000次GET请求和2000次PUT/COPY/POST/DELETE请求的额度,超出也要收费。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:26:02