"""Config file for parse-sme-marketing lambda.""" import os from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives import serialization from distutils.util import strtobool PROD_ENVIRONMENT = 'prod' DEV_ENVIRONMENT = 'dev' QA_ENVIRONMENT = 'qa' TEST_ENVIRONMENT = 'test' ENVIRONMENT = os.environ.get('ENVIRONMENT', DEV_ENVIRONMENT) # Application Metadata SCRIPT_NAME = os.environ.get('SCRIPT_NAME', 'bulk-asset-uploader') LOGGER_NAME = os.environ.get('LOGGER_NAME', 'bulk-asset-uploader') APPLICATION_NAME = os.environ.get('APPLICATION_NAME', 'bulk-assets-ingester') APP_VERSION = os.environ.get('APP_VERSION', '1.0') # 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_DATABASE = os.environ.get('SNOWFLAKE_DATABASE', '') 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 = {} # AWS ------------------------------------------------------------------------ AWS_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID', None) AWS_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY', None) AWS_REGION = os.environ.get('AWS_REGION', 'us-east-1') # Sentry --------------------------------------------------------------------- SENTRY = os.environ.get('SENTRY_DSN', None) SENTRY_TRACE_LEVEL = os.environ.get('SENTRY_TRACE_LEVEL', 1.0) # -- Logging ----------------------------------------------------------------- # Enable Debug Logging ------------------------------------------------------- DEBUG_LOG = strtobool(str(os.environ.get('DEBUG_LOG', 'False'))) # Logger DSN ---------------------------------------------------------------- LOGGER_DSN = os.environ.get('LOGGER_DSN') or None LOGGER_LEVEL = str(os.environ.get('LOGGER_LEVEL', 'ERROR')) or None # Log to Screen level CONSOLE_LOG_LEVEL = str(os.environ.get('CONSOLE_LOG_LEVEL', 'INFO')) # Logging Targets ------------------------------------------------------------ LOG_DIR = os.environ.get('LOG_DIR', str(os.getcwd() + '/logs')) MASTER_LOG = os.environ.get('MASTER_LOG', None) JSON_LOG = os.environ.get('JSON_LOG', None) CSV_LOG = os.environ.get('CSV_LOG', None) OTHER_LOG = os.environ.get('OTHER_LOG', None) # Application Vars ----------------------------------------------------------- SNOWFLAKE_S3_BUCKET = os.environ.get('SNOWFLAKE_S3_BUCKET') SNOWFLAKE_S3_LOCATION = os.environ.get('SNOWFLAKE_S3_LOCATION') # Snowflake location of output JSON trigger file. OUTPUT_S3_BUCKET = os.environ.get('OUTPUT_S3_BUCKET') OUTPUT_S3_LOCATION = os.environ.get('OUTPUT_S3_LOCATION') # Max Number of trigger files to allow write. CONCURRENT_STATE_MACHINE_COUNT = os.environ.get( 'CONCURRENT_STATE_MACHINE_COUNT', 1) # The input table for asset sources. SOURCE_TABLE_NAME = os.environ.get('SOURCE_TABLE_NAME') # USE_OWS_LOGGER_V2 = strtobool(str(os.environ.get('USE_OWS_LOGGER_V2', False))) BULK_ASSETS_INGESTER_SFN_ARN = os.environ.get('BULK_ASSETS_INGESTER_SFN_ARN') BULK_ASSETS_INGESTER_SFN_NAME = os.environ.get('BULK_ASSETS_INGESTER_SFN_NAME') USE_OWS_LOGGER_V2 = strtobool(str(os.environ.get('USE_OWS_LOGGER_V2', False)))