

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
<a name="snowflake-data-source"></a>

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
<a name="snowflake-data-source-prerequisites"></a>

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](working-with-domains-users.md) e [DataZone Progetti e ambienti Amazon](working-with-projects.md).
+ 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
<a name="snowflake-data-source-step1"></a>

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
<a name="snowflake-data-source-step2"></a>

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
<a name="snowflake-data-source-step3"></a>

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
<a name="snowflake-data-source-step4"></a>

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
<a name="snowflake-data-source-connection-properties"></a>


| 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
<a name="snowflake-data-source-verify"></a>

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.