如何使用boto3(或其他Python)列出_RequesterPays_ S3存储桶的内容?

And*_*son 5 amazon-s3 amazon-web-services python-3.x boto3

您可以通过boto3从RequesterPays S3存储桶下载文件,如下所示:

  s3_client.download_file('aws-naip', 'md/2013/1m/rgbir/38077/{}'.format(filename), full_path, {'RequestPayer':'requester'})
Run Code Online (Sandbox Code Playgroud)

我不知道如何列出存储桶中的对象...尝试在存储桶上调用objects.all()时收到身份验证错误。

如何使用boto3枚举RequesterPays存储桶的内容?请注意,这是请求方支付S3费用的一种特殊类型的存储桶。

Raf*_*Raf -1

boto3中,我们可以看到有一个#S3.Client.list_objects方法。这可用于枚举对象:

import boto3
s3_client = boto3.client('s3')
resp = s3_client.list_objects(Bucket='RequesterPays')

# print names of all objects
for obj in resp['Contents']:
    print 'Object Name: %s' % obj['Key']
Run Code Online (Sandbox Code Playgroud)

输出:

Object Name: pic.gif
Object Name: doc.txt
Object Name: page.html
Run Code Online (Sandbox Code Playgroud)

如果您收到 401,请确保调用 API 的 IAM 用户拥有s3:GetObject存储桶的权限。

  • 这个答案不正确,因为存储桶的名称是“aws-naip”,而“RequesterPays”是您使用某些 boto3 方法设置的属性(不是存储桶名称)。RequesterPays 指的是某个请求标头,如果添加到请求中,它看起来像这样:{'RequestPayer':'requester'} (2认同)