View a markdown version of this page

Connect Snowflake come fonte di dati in Amazon DataZone - Amazon DataZone

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Connect Snowflake come fonte di dati in Amazon DataZone

Amazon DataZone supporta Snowflake come fonte di dati di terze parti. Dopo aver collegato Snowflake a un DataZone progetto Amazon, il catalogo può indicizzare i database e gli schemi Snowflake, acquisire la derivazione a livello di colonna dalla cronologia delle query di Snowflake e consentire di interrogare le tabelle Snowflake dalla federazione. Questa pagina illustra come creare una connessione Snowflake utilizzando la CLI AWS .

Prerequisiti

Prima di iniziare, verifica che siano presenti le seguenti condizioni:

  • Un DataZone dominio Amazon e un progetto in cui desideri catalogare i dati Snowflake. Consulta Domini e accesso degli utenti in Amazon DataZone e DataZone Progetti e ambienti Amazon.

  • Un account Snowflake, con l'autorizzazione a creare ruoli e concedere privilegi nel database, nello schema e nel magazzino che desideri catalogare.

  • AWS Secrets Manager Accedi allo stesso AWS account del tuo DataZone dominio Amazon.

  • Un bucket Amazon S3 per la fuoriuscita di query, se prevedi di interrogare i dati di Snowflake da.

Eseguirai i passaggi in questo ordine: crea un ruolo Snowflake, archivia le credenziali Snowflake in, AWS Secrets Manager trova l'ID dell'ambiente di DataZone progetto Amazon, quindi chiama. aws datazone create-connection

Passaggio 1: creare un ruolo Snowflake per Amazon DataZone

Amazon DataZone si connette a Snowflake utilizzando un ruolo creato da te e a cui concedi privilegi specifici. Le borse di ruolo si dividono in quattro categorie:

  • Sincronizzazione dei metadati: Amazon DataZone legge la struttura delle tabelle e delle viste per popolare il catalogo.

  • Sincronizzazione del lignaggio: Amazon DataZone legge QUERY_HISTORY e ACCESS_HISTORY di Snowflake per derivare il lignaggio a livello di colonna.

  • Accesso alle query: richiesto per le richieste inviate tramite Amazon DataZone, incluso da.

  • Utilizzo del magazzino: richiesto per qualsiasi query eseguita dal ruolo.

Esegui le seguenti istruzioni in Snowflake, sostituendo i segnaposto con i tuoi valori:

CREATE ROLE <role_name>; -- Metadata: database and schema access GRANT USAGE ON DATABASE <database_name> TO ROLE <role_name>; GRANT USAGE ON SCHEMA <database_name>.<schema_name> TO ROLE <role_name>; -- Metadata: table and view structure (no data access) GRANT REFERENCES ON ALL TABLES IN SCHEMA <database_name>.<schema_name> TO ROLE <role_name>; GRANT REFERENCES ON ALL VIEWS IN SCHEMA <database_name>.<schema_name> TO ROLE <role_name>; GRANT REFERENCES ON FUTURE TABLES IN SCHEMA <database_name>.<schema_name> TO ROLE <role_name>; GRANT REFERENCES ON FUTURE VIEWS IN SCHEMA <database_name>.<schema_name> TO ROLE <role_name>; -- Lineage: access to QUERY_HISTORY and ACCESS_HISTORY GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE TO ROLE <role_name>; -- Query access GRANT SELECT ON ALL TABLES IN SCHEMA <database_name>.<schema_name> TO ROLE <role_name>; -- Optional: include tables created after the role is granted GRANT SELECT ON FUTURE TABLES IN SCHEMA <database_name>.<schema_name> TO ROLE <role_name>; -- Warehouse access GRANT USAGE ON WAREHOUSE <warehouse_name> TO ROLE <role_name>; -- Assign the role to the Snowflake user whose credentials DataZone will use GRANT ROLE <role_name> TO USER <snowflake_username>;
Importante

GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKEè necessario per il lignaggio. Senza di essa, la sincronizzazione dei metadati riesce ma non viene acquisito alcun record di derivazione.

Passaggio 2: Archivia le credenziali Snowflake in AWS Secrets Manager

Crea un account segreto nello AWS Secrets Manager stesso AWS account del tuo DataZone dominio Amazon. Amazon DataZone supporta due metodi di autenticazione: nome utente e password o coppia di chiavi.

Per l'autenticazione con nome utente e password, usa questo corpo JSON:

{ "username": "<snowflake_username>", "password": "<snowflake_password>" }

Per l'autenticazione tramite coppia di chiavi, usa questo corpo JSON:

{ "sfUser": "<snowflake_username>", "pem_private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----" }

Etichetta il segreto in modo che Amazon DataZone possa scoprirlo. Entrambi i tag sono obbligatori:

Chiave tag Valore
AmazonDataZoneDomain Il tuo ID di DataZone dominio Amazon
AmazonDataZoneProject L'ID DataZone del tuo progetto Amazon

Annota l'ARN del segreto. Lo passerai create-connection al passaggio 4.

Fase 3: Trova l'ID dell'ambiente di progetto

La chiamata create-connection API richiede l'ID dell'ambiente di progetto in cui risiede la connessione. È possibile derivarlo dal ruolo utente del progetto ARN.

Il ruolo utente del progetto ARN segue questo schema:

arn:aws:iam::<account_id>:role/datazone_usr_role_<project_id>_<environment_id>

L'ultimo segmento, dopo l'ultimo carattere di sottolineatura, è l'ID dell'ambiente. Ad esempio, in:

arn:aws:iam::123456789012:role/datazone_usr_role_a1b2c3dfadsf_58cjkfdsjfd

58cjkfdsjfd è l'ID dell'ambiente. Questo è il valore da passare come --environment-identifier nel passaggio 4. L'ID dell'ambiente corrisponde all'ambiente Tooling del progetto.

Fase 4: Creare la connessione Snowflake

Esegui il seguente comando AWS CLI, sostituendo i segnaposto con i tuoi valori:

aws datazone create-connection \ --domain-identifier <domain_id> \ --environment-identifier <environment_id> \ --name "<connection_name>" \ --description "<optional_description>" \ --props '{ "snowflakeProperties": { "connectivityProperties": { "connectionProperties": { "HOST": "<account>.snowflakecomputing.com", "PORT": "443", "DATABASE": "<database_name>", "WAREHOUSE": "<warehouse_name>", "SCHEMA": "<schema_name>", "ROLE_ARN": "<project_user_role_arn>", "CATALOG_CASING_FILTER": "UPPERCASE_ONLY" }, "athenaProperties": { "spill_bucket": "<project_s3_bucket_name>", "spill_prefix": "<domain_id>/<project_id>/dev/sys/athena" }, "authenticationConfiguration": { "authenticationType": "BASIC", "secretArn": "<secret_arn_from_step_2>" } }, "snowflakeRole": "<role_name_from_step_1>", "identityMapping": { "usernameAttribute": "EMAIL" } } }'

Riferimento alle proprietà di connessione

Proprietà Description
HOST L'URL del tuo account Snowflake.
PORT Il porto Snowflake. Utilizza 443.
DATABASE Il database Snowflake da catalogare.
WAREHOUSE Il magazzino Snowflake che Amazon DataZone utilizza per eseguire le query.
SCHEMA Lo schema Snowflake da catalogare.
ROLE_ARN Il ruolo utente del progetto ARN (vedi Fase 3).
CATALOG_CASING_FILTER Controlla la normalizzazione delle maiuscole e minuscole per gli identificatori catalogati. I valori validi sono UPPERCASE_ONLY e LOWERCASE_ONLY. Se omesso, il valore predefinito è. UPPERCASE_ONLY
spill_bucket Nome del bucket S3 per la fuoriuscita di query. Richiesto quando si esegue una query su Snowflake da.
spill_prefix Prefisso S3 per spill, nel formato. <domain_id>/<project_id>/dev/sys/athena
authenticationType BASICper l'autenticazione tramite coppia di username/password chiavi.
secretArn L'ARN del segreto creato nel passaggio 2.
snowflakeRole Il nome del ruolo Snowflake del passaggio 1.
identityMapping.usernameAttribute Imposta su EMAIL.

Verifica della connessione

Chiama aws datazone get-connection con il tuo ID di dominio e l'identificatore di connessione restituito da. create-connection Dopo la prima esecuzione di sincronizzazione dei metadati, le tabelle Snowflake catalogate vengono visualizzate nel DataZone catalogo Amazon del progetto.