import os import snowflake.connector from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives import serialization def get_snowflake_cursor(): """This function sets up the Snowflake connection.""" snowflake_private_key_path = os.environ.get('SNOWFLAKE_PRIVATE_KEY_PATH', '') snowflake_key_passphrase = os.environ.get('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()) # Snowflake connection parameters snowflake_db_config = { 'user': os.environ.get('SNOWFLAKE_USER'), 'private_key': private_key, 'account': os.environ.get('SNOWFLAKE_ACCOUNT'), 'role': os.environ.get('SNOWFLAKE_ROLE'), 'warehouse': os.environ.get('SNOWFLAKE_WAREHOUSE'), 'db': os.environ.get('SNOWFLAKE_DATABASE'), 'schema': os.environ.get('SNOWFLAKE_SCHEMA') } # Connect to Snowflake conn = snowflake.connector.connect( **snowflake_db_config ) return conn