如何下载信息?

时间:2017-03-28 19:28:32

标签: amazon-s3 boto3

目前,我有以下内容下载AWS(亚马逊网络服务)S3存储桶下的所有文件。

3 个答案:

答案 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()将生成一个迭代器,目前没有已知的限制。

但是,你必须知道:

  1. 从S3下载到本地系统将花费您,即0.09 / GB。如果您需要经常处理这些文件,也许您应该在EC2中运行下载或使用lambda进行后处理。

  2. 同一区域S3数据到EC2下载是免费的。您可以运行测试大量下载证明(例如说100GB +)而无需担心账单。你只需支付EC2实例。

  3. 将会话的性能/连续性从s3下载到本地Intranet,取决于您的本地Internet连接设置。这可能是您自己的防火墙策略,路由器,ISP等的限制