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.