Overloading Square Brackets to Access AWS Secrets

Overloading Square Brackets to Access AWS Secrets

Operator overloading allows developers to define custom behavior for standard operators.

In Python, operator overloading is achieved by defining special methods in a class. These special methods, also known as magic methods or dunder (double underscore) methods, have names that begin and end with double underscores.

Define __getitem__() to overload the square bracket operator

import boto3
from botocore.exceptions import ClientError


class AWSSecrets:

    def __init__(self, **kwargs):
        self.client = boto3.client(
            service_name='secretsmanager',
            **kwargs
        )

    def __getitem__(self, secret_name):
        try:
            get_secret_value_response = self.client.get_secret_value(SecretId=secret_name)
            return get_secret_value_response['SecretString']
        except ClientError as e:
            raise e

secrets = AWSSecrets(region_name='us-east-1')
secret = secrets['<secret_name>']