import json import boto3 from botocore.exceptions import ClientError from app.config import AWS_REGION, API_SECRETS from app.logger import log class SecretsManagerClient: """Client to get secrets from AWS Secrets Manager.""" def __init__(self): self.client = boto3.client('secretsmanager', region_name=AWS_REGION) def get_secret(self, secret_name): log.info('Getting secret from AWS Secrets Manager') try: aws_secrets = self.client.get_secret_value(SecretId=secret_name) except ClientError as e: log.error("Failed to get secrets:", e) raise e return aws_secrets['SecretString'] def get_secret_json(self, secret_name=API_SECRETS): log.info('Getting json secrets for api') secret_string = self.get_secret(secret_name) secrets = json.loads(secret_string) return secrets def put_secret_json(self, secret_value, secret_name=API_SECRETS): log.info('Updating json secrets for api') self.client.put_secret_value( SecretId=secret_name, SecretString = json.dumps(secret_value, indent=2) )