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

Bec*_*cks 5 python amazon-s3 bucket boto amazon-web-services

简单的问题在这里?...

如何使用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
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我很想知道这个 AWS 账户拥有的存储桶中是否存在一个存储桶......

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

谢谢

dev*_*rus 2

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

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

无论如何,你必须进行 API 调用,所以我认为你可以在这里选择个人喜好(无论你喜欢处理异常,还是简单地检查 None)。

所以你这里有几个选择:

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

或者:

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