How can I check that a AWS S3 bucket exists?

Becks picture Becks · May 15, 2015 · Viewed 8k times · Source

Simple question here? ...

How can I check with boto that a AWS bucket exists? ... preferably by providing the path? ...

here is the approach I feel like taking:

def bucket_exists(self, bucket_name):
    connection = boto.s3.connection.S3Connection('<aws access key>', '<aws secret key>')
    buckets = connection.get_all_buckets()
    for bucket in buckets:
        bucket_name = bucket.name
        # Bucket existence logic here
        # submit boto request
        ie:. exists = boto.get_bucket(bucket_name, validate=True)
        if exists:
            return True
        else:
            return False

In the code above I am interested to find if a bucket exists amongst the buckets that this AWS Account owns ...

IS there a better way to find out if a bucket exists? How would I implement a better way?

Thanks

Answer

lmo picture lmo · May 15, 2015

From the documentation:

If you are unsure if the bucket exists or not, you can use the S3Connection.lookup method, which will either return a valid bucket or None.

So this is the best option:

bucket = connection.lookup('this-is-my-bucket-name')
if not bucket:
    print "This bucket doesn't exist."