TECHIES WORLD

For Techs.... Techniques.... Technologies....

AWSLinuxPython

How to enable encryption for all S3 buckets

Encryption for S3 bucket can be enabled from the AWS console itself. But if the number of buckets are more, its difficult to do this manually.

This article explains one Python script to enable encryption for all S3 buckets.

import boto3
from botocore.exceptions import ClientError


client = boto3.client(
    's3',
    region_name=' ',
    aws_access_key_id=' ',
    aws_secret_access_key=' '
)


response = client.list_buckets()
SSECNF = 'ServerSideEncryptionConfigurationNotFoundError'
for bucket in response['Buckets']:
try:
    bucket = client.get_bucket_encryption(Bucket=bucket['Name'])
except client.exceptions.ClientError as e:
    if e.response['Error']['Code'] == SSECNF:
        client.put_bucket_encryption(Bucket=bucket['Name'],
        ServerSideEncryptionConfiguration={
        'Rules': [
        {
            'ApplyServerSideEncryptionByDefault': {
                'SSEAlgorithm': 'AES256'
            }
        },
        ]
        })
    else:
        print("Unexpected error: %s" % e)

Here the value of region_name, aws_access_key_id and aws_secret_access_key are need to be updated with corresponding values.

That's all…