Boto3: Using boto3.resource('s3') to list all S3 buckets

11,395

Solution 1

You can use s3.buckets.all():

s3 = boto3.resource('s3')
for bucket in s3.buckets.all():
  print(bucket.name)

Using list comprehension:

s3 = boto3.resource('s3')
buckets = [bucket.name for bucket in s3.buckets.all()]
print(buckets)

Solution 2

Get .buckets.pages() from the S3 resource and then loop through the pages to grab the buckets:

import boto3


buckets_iter = boto3.resource('s3').buckets.pages()
buckets = []
for bucket in buckets_iter:
    buckets += bucket

print(buckets)

I hope this helps.

Share:
11,395
Eytan
Author by

Eytan

Updated on June 06, 2022

Comments

  • Eytan
    Eytan almost 2 years

    Is it possible to list all S3 buckets using a boto3 resource, ie boto3.resource('s3')?

    I know that it's possible to do so using a low-level service client:

    import boto3
    boto3.client('s3').list_buckets()
    

    However in an ideal world we can operate at the higher level of resources. Is there a method that allows us to to do and, if not, why?