我正在使用 Paginator 迭代 S3 存储桶的内容(在 http://boto3.readthedocs.io/en/latest/guide/paginators.html#creating-paginators 之后):
client = boto3.client('s3')
paginator = client.get_paginator('list_objects')
page_iterator = paginator.paginate(Bucket=<my_bucket>)
for page in page_iterator:
for object in page['Contents']:
key = object['Key']
在此示例中,方法名称'list_objects' 作为字符串传递。但是,我实际上想使用带有关键字参数 Prefix="files/" 的“部分”函数 list_objects,因为我感兴趣的对象在files/“目录”(参见 http://boto3.readthedocs.io/en/latest/reference/services/s3.html#S3.Client.list_objects)。
这可能吗? (从文档中我不清楚如何执行此操作;我可以在双 for 循环中执行 if key.startswith("files/"),但这似乎不是一个优雅的解决方案)。
请您参考如下方法:
您是否在同一文档中遗漏了这一点? Filtering results
S3.Paginator.list_objects.paginate() 接受一个 Prefix 参数,用于在将分页结果发送到客户端之前通过服务器端的前缀过滤分页结果:
client = boto3.client('s3', region_name='us-west-2')
paginator = client.get_paginator('list_objects')
operation_parameters = {'Bucket': 'my-bucket',
'Prefix': 'foo/baz'}
page_iterator = paginator.paginate(**operation_parameters)
for page in page_iterator:
print(page['Contents'])
