您可以通过boto3从RequesterPays S3桶下载文件,如下所示:
s3_client.download_file('aws-naip', 'md/2013/1m/rgbir/38077/{}'.format(filename), full_path, {'RequestPayer':'requester'})
我不知道的是如何列出bucket中的对象......当我尝试调用bucket上的objects.all()时,我得到了一个身份验证错误。
如何使用boto3枚举RequesterPays bucket的内容?请注意,这是一种特殊类型的bucket,其中请求者支付S3费用。
3条答案
按热度按时间xkrw2x1b1#
在boto3中,我们可以看到有一个
#S3.Client.list_objects
方法,这个方法可以用来枚举对象:输出:
如果您收到401,请确保调用API的IAM用户对存储桶具有
s3:GetObject
权限。qeeaahzv2#
您必须将
RequestPayer
kwarg传递给list_objects
方法。另外,根据boto3的文档,
注意:ListObjectsV2是经过修订的列表对象API,我们建议您使用此经过修订的API进行新的应用程序开发
将其与分页放在一起看起来如下所示:
可以像这样使用
s2j5cfk03#
我有同样的问题,所以这里是代码:
对查询的响应是一个字典,在该字典中还有另一个名为contents的字典,其中的关键字是对象的路径。您可以在以下链接中查看响应字段:列表_对象文档
注意:list_objects返回多达1000个内容,因此您必须使用next_marker属性进行迭代(如果您想要完整的列表,我会更新这个答案)。我猜您已经知道如何设置访问密钥和密钥。如果您需要更多细节,请告诉我。