"""Constants and settings for collaborator report generation.""" import os import boto3 import sentry_sdk from sentry_sdk.integrations.aws_lambda import AwsLambdaIntegration SERVICE_NAME = "lambda-collaborator-report-process" PROD_ENVIRONMENT = "prod" DEV_ENVIRONMENT = "dev" QA_ENVIRONMENT = "qa" TEST_ENVIRONMENT = "test" ENVIRONMENT = os.environ.get("Environment", DEV_ENVIRONMENT) # noqa: SIM112 SENTRY_DSN = os.environ.get("SENTRY_DSN") OUTPUT_BUCKET = os.environ.get("OUTPUT_BUCKET", "") NOTIFICATION_FROM_EMAIL = os.environ.get("NOTIFICATION_FROM_EMAIL") AWS_ACCOUNT_ID = os.environ.get("AWS_ACCOUNT_ID", "") def _get_secret(secrets_manager, secret_name): """Get a secrets from the secrets manager. Args: secrets_manager (SecretsManager.Client): Manager to get secret from secret_name (str): Name of the secret to retrieve Returns: str """ secret_id = f"{ENVIRONMENT}/{SERVICE_NAME}/{secret_name}" secret_response = secrets_manager.get_secret_value(SecretId=secret_id) return secret_response["SecretString"] COLLABORATOR_DB_CONFIG = { "user": os.environ.get("COLLAB_DB_USER"), "host": os.environ.get("COLLAB_DB_HOST"), "database": os.environ.get("COLLAB_DB_DATABASE"), } # Extract credentials if ENVIRONMENT in [PROD_ENVIRONMENT, QA_ENVIRONMENT]: session = boto3.Session() secrets_manager_client = session.client("secretsmanager") sentry_dsn = _get_secret(secrets_manager_client, "SENTRY_DSN") if sentry_dsn: sentry_sdk.init( dsn=sentry_dsn, environment=ENVIRONMENT, integrations=[AwsLambdaIntegration()], ) COLLABORATOR_DB_CONFIG["password"] = _get_secret(secrets_manager_client, "COLLAB_DB_PASS") else: COLLABORATOR_DB_CONFIG["password"] = os.environ.get("COLLAB_DB_PASS")