"""Snowflake connector.""" from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives import serialization from lambdacommon.common_config import logger import snowflake.connector import config def get_snowflake_connector(): """Get Snowflake connection connector. Returns: SnowflakeConnection """ p_key = serialization.load_pem_private_key( config.SNOWFLAKE_PRIVATE_KEY.encode('utf-8'), password=(config.SNOWFLAKE_PRIVATE_KEY_PASS.encode('utf-8') if config.SNOWFLAKE_PRIVATE_KEY_PASS else None), backend=default_backend() ) pkb = p_key.private_bytes( encoding=serialization.Encoding.DER, format=serialization.PrivateFormat.PKCS8, encryption_algorithm=serialization.NoEncryption()) logger.debug('Connecting snowflake...') connector = snowflake.connector.connect( account=config.SNOWFLAKE_ACCOUNT, user=config.SNOWFLAKE_USER, authenticator='SNOWFLAKE_JWT', private_key=pkb, private_key_file_pwd=config.SNOWFLAKE_PRIVATE_KEY_PASS, database=config.SNOWFLAKE_DATABASE, schema=config.SNOWFLAKE_SCHEMA, warehouse=config.SNOWFLAKE_WAREHOUSE ) return connector