例如,我有这样的代码:
import boto3
s3 = boto3.resource('s3')
bucket = s3.Bucket('my-bucket-name')
# Does it exist???
在撰写本文时,没有高级方法可以快速检查存储桶是否存在并且您可以访问它,但您可以对HeadBucket操作进行低级调用。这是进行此检查的最便宜的方法:
from botocore.client import ClientError
try:
s3.meta.client.head_bucket(Bucket=bucket.name)
except ClientError:
# The bucket does not exist or you have no access.
或者,您也可以重复调用create_bucket
。该操作是幂等的,因此它将创建或仅返回现有的存储桶,如果您正在检查存在性以知道是否应该创建存储桶,这很有用:
bucket = s3.create_bucket(Bucket='my-bucket-name')
和往常一样,一定要查看官方留档。
注意:在0.0.7版本之前,meta
是一个Python字典。
我在这方面取得了成功:
import boto3
s3 = boto3.resource('s3')
bucket = s3.Bucket('my-bucket-name')
if bucket.creation_date:
print("The bucket exists")
else:
print("The bucket does not exist")
正如@Daniel提到的,Boto3文档建议的最佳方法是使用head_bucket()
head_bucket()-此操作有助于确定存储桶是否存在并且您有权访问它。
如果您有少量的存储桶,您可以使用以下方法:
>>> import boto3
>>> s3 = boto3.resource('s3')
>>> s3.Bucket('Hello') in s3.buckets.all()
False
>>> s3.Bucket('some-docs') in s3.buckets.all()
True
>>>