import os from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives import serialization sf_config = { 'role': os.environ.get('SNOWFLAKE_ROLE'), 'warehouse': os.environ.get('SNOWFLAKE_WAREHOUSE'), 'db': os.environ.get('SNOWFLAKE_DATABASE'), 'schema': os.environ.get('SNOWFLAKE_SCHEMA'), 'user': os.environ.get('SNOWFLAKE_USER'), 'password': os.environ.get('SNOWFLAKE_PASSWORD'), 'account': os.environ.get('SNOWFLAKE_ACCOUNT') } private_key = None snowflake_private_key_path = os.environ['HOME'] + '/.ssh/snowflake/rsa_key.p8' snowflake_private_key_path = os.environ.get( 'SNOWFLAKE_PRIVATE_KEY_PATH', snowflake_private_key_path) snowflake_key_passphrase = os.environ.get( 'SNOWFLAKE_KEY_PASSPHRASE', None) if snowflake_key_passphrase: 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() ) private_key = p_key.private_bytes( encoding=serialization.Encoding.DER, format=serialization.PrivateFormat.PKCS8, encryption_algorithm=serialization.NoEncryption()) sf_config['private_key'] = private_key SF_CONFIG = sf_config