代码之家  ›  专栏  ›  技术社区  ›  BrightFlow

如何在S3中列出前缀下的所有对象

  •  5
  • BrightFlow  · 技术社区  · 8 年前

    前缀下有3k多个对象。我使用以下代码列出所有对象以获取其名称,但API仅检索1000个对象。 s3\u客户端=boto3。客户端(“s3”)

    response = s3_client.list_objects(
        Bucket = "my-bucket",
        Prefix = "my-prefix",
        MaxKeys=50000
    )
    
    
    s3 = boto3.resource('s3')
    bucket = s3.Bucket(S3)
    
    print(len(response['Contents'])) # only retrieve 1000
    
    1 回复  |  直到 8 年前
        1
  •  8
  •   helloV    8 年前

    使用分页器循环浏览多个页面。请参见: Creating Paginators

    import boto3
    
    client = boto3.client('s3')
    paginator = client.get_paginator('list_objects')
    operation_parameters = {'Bucket': 'my-bucket',
                            'Prefix': 'my-prefix'}
    page_iterator = paginator.paginate(**operation_parameters)
    for page in page_iterator:
        print(page['Contents'])