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.
Author by
Eytan
Updated on June 06, 2022Comments
-
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?