import os import json import logging import boto3 from botocore.exceptions import ClientError logger = logging.getLogger(__name__) def load_env_from_aws_secrets_manager( secret_name: str, region_name: str = "us-west-2", override: bool = False, suppress_aws_auth_error: bool = False, ) -> None: """ Load environment variables from AWS Secrets Manager. :param secret_name: The name of the secrets to load. :param region_name: The region of the secrets to load. :param override: Whether to override existing environment variables. :param suppress_aws_auth_error: Whether to suppress AWS authentication errors. """ print(f"Loading environment variables from AWS Secrets Manager: {secret_name}") session = boto3.session.Session() client = session.client(service_name="secretsmanager", region_name=region_name) try: get_secret_value_response = client.get_secret_value(SecretId=secret_name) except ClientError as e: if not suppress_aws_auth_error: raise e return secrets = json.loads(get_secret_value_response["SecretString"]) for k, v in secrets.items(): if k in os.environ and not override: continue if v is not None: os.environ[k] = v