目前,我有以下内容下载AWS(亚马逊网络服务)S3存储桶下的所有文件。
答案 0 :(得分:1)
要在boto3中执行此操作,您可以执行以下操作:
import boto3
s3 = boto3.resource('s3')
bucket = s3.Bucket('mybucket')
for object_summary in bucket.objects.all():
print(object_summary.key)
print(object_summary.last_modified)
在这种情况下,boto3将处理所有分页,因此您不仅限于结果的第一页。
这是你想要做的吗?
答案 1 :(得分:0)
来自文档: http://boto3.readthedocs.io/en/latest/reference/services/s3.html?highlight=s3#S3.Client.list_objects_v2 返回存储桶中的部分或全部(最多1000个)对象。
response = client.list_objects_v2(
Bucket='string',
Delimiter='string',
EncodingType='url',
MaxKeys=123,
Prefix='string',
ContinuationToken='string',
FetchOwner=True|False,
StartAfter='string',
RequestPayer='requester'
)
MaxKeys(整数) - 设置响应中返回的最大键数。响应可能包含较少的键,但永远不会包含更多。
你知道你在s3中有多少个物品?
答案 2 :(得分:0)
限制:boto3 list_object()和list_object_v2()将返回最多1000个键。要继续获取对象,您需要使用" ContinuationToken"参数。 boto3.s3.resource.objects.all()将生成一个迭代器,目前没有已知的限制。
但是,你必须知道:
从S3下载到本地系统将花费您,即0.09 / GB。如果您需要经常处理这些文件,也许您应该在EC2中运行下载或使用lambda进行后处理。
同一区域S3数据到EC2下载是免费的。您可以运行测试大量下载证明(例如说100GB +)而无需担心账单。你只需支付EC2实例。
将会话的性能/连续性从s3下载到本地Intranet,取决于您的本地Internet连接设置。这可能是您自己的防火墙策略,路由器,ISP等的限制