如何使用 python try except output (AWS SDK)

how to use python try except output (AWS SDK)

要求:从AWS账户中找出未加密的s3 buckets并添加标签。

目前已实施


import boto3
from botocore.exceptions import ClientError

# Retrieve the list of existing buckets
s3 = boto3.client('s3')
response = s3.list_buckets()


# Find out unencrypted bucket list
for bucket in response['Buckets']:
    try:
        enc = s3.get_bucket_encryption(Bucket=bucket["Name"])
    except ClientError as e:
        if e.response['Error']['Code'] == 'ServerSideEncryptionConfigurationNotFoundError':
            print('Bucket with no server-side encryption: %s' % (bucket['Name']))
        else:
            print("Bucket with unexpected error: %s, unexpected error: %s" % (bucket['Name'], e))
    

下一行为我提供了未加密的存储桶列表: print('Bucket with no server-side encryption: %s' % (bucket['Name']))

结果:

Bucket with no server-side encryption: xyz1
Bucket with no server-side encryption: xyz2

需要支持才能关注 我可以获得未加密的 s3 存储桶列表,但不确定如何使用 except python 代码的输出,并在以后使用未加密的存储桶名称添加标签。

如果您在 try-catch 之外声明了一个列表,您可以稍后访问它

例如

import boto3
from botocore.exceptions import ClientError

#this is our new list
buckets = []

# Retrieve the list of existing buckets
s3 = boto3.client('s3')
response = s3.list_buckets()


# Find out unencrypted bucket list
for bucket in response['Buckets']:
    try:
        enc = s3.get_bucket_encryption(Bucket=bucket["Name"])
    except ClientError as e:
        if e.response['Error']['Code'] == 'ServerSideEncryptionConfigurationNotFoundError':
            #add the bucket name to our new list
            buckets.append(bucket['Name'])

            print('Bucket with no server-side encryption: %s' % (bucket['Name']))
        else:
            print("Bucket with unexpected error: %s, unexpected error: %s" % (bucket['Name'], e))
    

#now you can use the "buckets" variable and it will contain all the unencrypted buckets
for bucket in buckets:
    print(bucket)