如何检查 S3 存储桶是否有标签

Cha*_*dra 7 python amazon-s3 amazon-web-services boto3

我试图检查现有的 s3 存储桶是否有标签,如果存储桶没有标签,将添加标签,我尝试了下面的代码

for region in region_list:
    s3 = boto3.resource('s3', region)
    s3_client = boto3.client('s3', region)
        for bucket in s3.buckets.all():
            s3_bucket = bucket
            s3_bucket_name = s3_bucket.name
            response = s3_client.get_bucket_tagging(Bucket=s3_bucket_name)
            tagset = response['TagSet']
                if len(response['TagSet'])==0:
                    print "s3 bucket not have tags, adding tags"
                else:
                    pass
Run Code Online (Sandbox Code Playgroud)

但低于错误

Traceback (most recent call last):
File "C:\Python27\ec2info.py", line 235, in <module>
response = s3_client.get_bucket_tagging(Bucket=s3_bucket_name)
File "C:\Python27\lib\site-packages\botocore\client.py", line 314, in 
_api_call
return self._make_api_call(operation_name, kwargs)
File "C:\Python27\lib\site-packages\botocore\client.py", line 612, in 
_make_api_call
raise error_class(parsed_response, operation_name)
ClientError: An error occurred (NoSuchTagSet) when calling the 
GetBucketTagging operation: The TagSet does not exist
Run Code Online (Sandbox Code Playgroud)

我在这里做错的地方,检查 s3 存储桶是否有标签的正确方法是什么

在此先感谢您的帮助

hel*_*loV 8

因为在没有标签时get_bucket_tagging抛出NoSuchTagSet。捕获异常并创建标签。此外,不要循环遍历区域,无论您连接到哪个区域端点,您都将获得所有存储桶。

请参阅:调用 GetBucketTagging 操作时的 NoSuchTagSet

from botocore.exceptions import ClientError

for bucket in s3.buckets.all():
    s3_bucket = bucket
    s3_bucket_name = s3_bucket.name
    try:
        response = s3_client.get_bucket_tagging(Bucket=s3_bucket_name)
        #print response
        #tagset = response['TagSet']
    except ClientError:
        print s3_bucket_name, "does not have tags, adding tags"
Run Code Online (Sandbox Code Playgroud)