如何检查AWS S3存储桶是否存在?

时间:2015-05-15 19:08:22

标签: python amazon-web-services amazon-s3 boto bucket

这里有简单的问题吗? ...

如何查看 boto 是否存在AWS存储桶? ...最好通过提供路径? ......

这是我想采取的方法:

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

在上面的代码中,我有兴趣了解此AWS账户拥有的存储桶中是否存在存储桶...

有没有更好的方法来确定是否存在存储桶?我该如何实施更好的方法?

谢谢

2 个答案:

答案 0 :(得分:4)

来自文档:

  

如果您不确定水桶是否存在,可以使用   S3Connection.lookup方法,它将返回一个有效的桶或   无。

所以这是最好的选择:

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

答案 1 :(得分:1)

您可以尝试加载存储桶(正如您现在所做的那样)。默认情况下,该方法设置为验证存储桶是否存在。

您也可以尝试“查找”该存储桶。该方法将引发S3ResponseError。

以太方式,你必须进行API调用,所以我认为你在这里留下个人偏好(无论你喜欢处理异常,还是只是检查无)。

所以你有两个选择:

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

或者:

try:
    bucket = connection.get_bucket('this-is-my-bucket-name')
except S3ResponseError:
    print "This bucket doesn't exist."