import functools import json from typing import Any import boto3 @functools.lru_cache(maxsize=None) def _client(region: str) -> Any: return boto3.client('secretsmanager', region_name=region) def get_secret(secret_name: str, region: str = 'us-east-1') -> dict[str, Any] | str: response = _client(region).get_secret_value(SecretId=secret_name) if 'SecretString' not in response: raise ValueError( f"Secret '{secret_name}' has no SecretString value — binary secrets are not supported" ) value = response['SecretString'] try: parsed = json.loads(value) if isinstance(parsed, dict): return parsed return value except json.JSONDecodeError: return value