Spaces:
Running
Running
| """Secrets resolution order: | |
| 1. AWS Secrets Manager (if AWS_REGION set and secret exists) | |
| 2. Environment variable | |
| 3. None | |
| """ | |
| import logging | |
| import os | |
| from typing import Optional | |
| logger = logging.getLogger("rga_auditor.secrets") | |
| _aws_client = None | |
| def _get_aws_client(): | |
| global _aws_client | |
| if _aws_client is not None: | |
| return _aws_client | |
| try: | |
| import boto3 | |
| region = os.getenv("AWS_REGION", "us-east-1") | |
| _aws_client = boto3.client("secretsmanager", region_name=region) | |
| except Exception as e: | |
| logger.debug("AWS Secrets Manager unavailable: %s", e) | |
| _aws_client = False # sentinel: don't try again | |
| return _aws_client or None | |
| def get_secret(key: str) -> Optional[str]: | |
| client = _get_aws_client() | |
| if client: | |
| try: | |
| r = client.get_secret_value(SecretId=key) | |
| return r.get("SecretString") | |
| except Exception as e: | |
| logger.debug("AWS Secrets Manager lookup failed for %s: %s", key, e) | |
| return os.getenv(key) | |