"""Config file.""" from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives import serialization import os from distutils.util import strtobool ENVIRONMENT = os.environ.get('ENVIRONMENT', 'DEV').upper() # How many assets to put in each table - DO NOT GO ABOVE 500 ASSETS_PER_TABLE = int(os.environ.get('ASSETS_PER_TABLE', 0)) MAX_ASSETS_PER_TABLE = int(os.environ.get('MAX_ASSETS_PER_TABLE', 500)) # Max number of concurrent SFN executions MAX_CONCURRENT_SFN = int(os.environ.get('MAX_CONCURRENT_SFN', 10)) # If True, limit the # of rows dropped for the SFN to 2 DEBUG_WAKEUP = strtobool(os.environ.get('DEBUG_WAKEUP', 'False')) # The name of the table that contains the list of assets to ingest INPUT_TABLE_NAME = os.environ.get('INPUT_TABLE_NAME', None) # The name of the S3 bucket where the JSON files are dropped JSON_DROP_BUCKET = os.environ.get('JSON_DROP_BUCKET') # The prefix of the JSON files JSON_DROP_KEY_PREFIX = os.environ.get('JSON_DROP_KEY_PREFIX') # AWS Creds AWS_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID') AWS_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY') AWS_SESSION_TOKEN = os.environ.get('AWS_SESSION_TOKEN') # SFN Values SFN_NAME = os.environ.get('SFN_NAME') # Snowflake ------------------------------------------------------------------ SNOWFLAKE_ACCOUNT = os.environ.get('SNOWFLAKE_ACCOUNT', 'orchard') SNOWFLAKE_USER = os.environ.get('SNOWFLAKE_USER', '') SNOWFLAKE_ROLE = os.environ.get('SNOWFLAKE_ROLE', 'DEV_ENGINEERING') SNOWFLAKE_PASSWORD = os.environ.get('SNOWFLAKE_PASSWORD', '') SNOWFLAKE_WAREHOUSE = os.environ.get( 'SNOWFLAKE_WAREHOUSE', 'DEV_OWS_WAREHOUSE') SNOWFLAKE_CATALOG = os.environ.get('SNOWFLAKE_CATALOG', '') SNOWFLAKE_SCHEMA = os.environ.get('SNOWFLAKE_SCHEMA', '') SNOWFLAKE_KEY_PASSPHRASE = os.environ.get('SNOWFLAKE_KEY_PASSPHRASE', '') SNOWFLAKE_PRIVATE_KEY_PATH = os.environ.get('SNOWFLAKE_PRIVATE_KEY_PATH', '') # ----------- Snowflake PEM-key RSA auth ------------------------------------- if SNOWFLAKE_KEY_PASSPHRASE: try: HOME = os.environ['HOME'] except KeyError: HOME = str( os.environ['HOMEDRIVE'] + os.environ['HOMEPATH'] ).replace('\\', '/') # Snowflake key if not SNOWFLAKE_PRIVATE_KEY_PATH: SNOWFLAKE_PRIVATE_KEY_PATH = '{}/.ssh/snowflake/rsa_key.p8'.format( HOME) with open(SNOWFLAKE_PRIVATE_KEY_PATH, 'rb') as key: p_key = serialization.load_pem_private_key( key.read(), password=SNOWFLAKE_KEY_PASSPHRASE.encode(), backend=default_backend()) pkb = p_key.private_bytes( encoding=serialization.Encoding.DER, format=serialization.PrivateFormat.PKCS8, encryption_algorithm=serialization.NoEncryption()) SNOWFLAKE_CONNECT_ARGS = {'private_key': pkb} else: SNOWFLAKE_CONNECT_ARGS = {}