"""Configuration parameters.""" import base64 import logging import os import boto3 snowflake_logger = logging.getLogger('snowflake.connector') snowflake_logger.setLevel(logging.INFO) ch = logging.StreamHandler() ch.setLevel(logging.INFO) ch.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')) snowflake_logger.addHandler(ch) log = logging.getLogger('default') log.setLevel(logging.INFO) log.addHandler(ch) # AWS settings AWS_REGION = os.environ.get('AWS_REGION', 'us-east-1') SCRIPT_NAME = 'lambda-masters-registry' ENVIRONMENT = os.environ.get('Environment', 'dev') MYSQL_HOST = os.environ.get('MYSQL_HOST') MYSQL_PORT = int(os.environ.get('MYSQL_PORT', 3306)) MYSQL_USER = os.environ.get('MYSQL_USER') MYSQL_PASSWORD = os.environ.get('MYSQL_PASSWORD') MYSQL_DB = os.environ.get('MYSQL_DB') MYSQL_TABLE_NAME = os.environ.get( 'MYSQL_TABLE_NAME') MAX_RECORDS = int(os.environ.get('MAX_RECORDS', 100000000)) BATCH_SIZE = int(int(os.environ.get('BATCH_SIZE', 10000))) BULK_BATCH_SIZE = int(os.environ.get('BULK_BATCH_SIZE', 100000)) MAX_FILE_SIZE = int(os.environ.get('MAX_FILE_SIZE', 5368709120)) secrets_manager_client = boto3.client( 'secretsmanager', region_name=AWS_REGION) private_key_path = os.environ.get('SNOWFLAKE_PRIVATE_KEY_PATH') private_key_str = os.environ.get('SNOWFLAKE_PRIVATE_KEY') if private_key_path: try: from cryptography.hazmat.primitives.serialization import ( load_pem_private_key, Encoding, PrivateFormat, NoEncryption ) with open(private_key_path, 'rb') as f: private_key = load_pem_private_key( f.read(), password=None ).private_bytes( Encoding.DER, PrivateFormat.PKCS8, NoEncryption()) except Exception as e: # noqa: E722 log.exception(f'Failed to load private key from file: {e}') private_key = None elif private_key_str is not None: try: private_key = base64.b64decode( bytes(private_key_str, encoding='utf-8'), validate=True) except Exception: # noqa: E722 private_key = None else: try: private_key_string = secrets_manager_client.get_secret_value( SecretId='{}/{}/SNOWFLAKE_KEY'.format( ENVIRONMENT, SCRIPT_NAME))['SecretString'] private_key = base64.b64decode( bytes(private_key_string, encoding='utf-8')) except Exception as e: # noqa: E722 log.exception(f'Failed to get private key from Secrets: {e}') private_key = None SNOWFLAKE_ACCOUNT = os.environ.get('SNOWFLAKE_ACCOUNT') SNOWFLAKE_USER = os.environ.get('SNOWFLAKE_USER') SNOWFLAKE_PASSWORD = os.environ.get('SNOWFLAKE_PASSWORD') SNOWFLAKE_PRIVATE_KEY = private_key SNOWFLAKE_DB = os.environ.get('SNOWFLAKE_DB') SNOWFLAKE_ROLE = os.environ.get('SNOWFLAKE_ROLE') SNOWFLAKE_SCHEMA = os.environ.get('SNOWFLAKE_SCHEMA') SNOWFLAKE_WAREHOUSE = os.environ.get('SNOWFLAKE_WAREHOUSE') USE_MRR = os.environ.get('USE_MRR', 'true').lower() == 'true'