Home > Back-end >  how to use python try except output (AWS SDK)
how to use python try except output (AWS SDK)

Time:06-01

Requirement: Find out unencrypted s3 buckets from AWS account and add tag to it.

Implemented so far


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))
    

Following line gives me the unencrypted bucketslist: print('Bucket with no server-side encryption: %s' % (bucket['Name']))

Result:

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

Need support for following I can get the list of unencrypted s3 buckets but not sure how to use the output from except python code and utilize unencrypted bucket names to add tag later.

CodePudding user response:

If you declare a list outside of your try-catch, you can access it later on

E.g.

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)
  • Related