

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Connect Snowflake als Datenquelle in Amazon DataZone
<a name="snowflake-data-source"></a>

Amazon DataZone unterstützt Snowflake als Datenquelle eines Drittanbieters. Nachdem Sie Snowflake mit einem DataZone Amazon-Projekt verbunden haben, kann der Katalog Ihre Snowflake-Datenbanken und -Schemas indizieren, die Herkunft auf Spaltenebene aus dem Abfrageverlauf von Snowflake erfassen und es Ihnen ermöglichen, Snowflake-Tabellen über den Verbund abzufragen. Auf dieser Seite erfahren Sie, wie Sie mithilfe der CLI eine Snowflake-Verbindung herstellen. AWS 

## Voraussetzungen
<a name="snowflake-data-source-prerequisites"></a>

Bevor Sie beginnen, stellen Sie sicher, dass Folgendes vorhanden ist:
+ Eine DataZone Amazon-Domain und ein Projekt, in dem die Snowflake-Daten katalogisiert werden sollen. Siehe [Domains und Benutzerzugriff in Amazon DataZone](working-with-domains-users.md) und [DataZone Amazon-Projekte und -Umgebungen](working-with-projects.md).
+ Ein Snowflake-Konto mit der Berechtigung, Rollen zu erstellen und Berechtigungen in der Datenbank, dem Schema und dem Warehouse zu gewähren, die Sie katalogisieren möchten.
+ Zugriff AWS Secrets Manager auf dasselbe AWS Konto wie Ihre DataZone Amazon-Domain.
+ Ein Amazon S3 S3-Bucket für Query Spill, falls Sie Snowflake-Daten abfragen möchten.

Sie führen die Schritte in dieser Reihenfolge aus: Erstellen Sie eine Snowflake-Rolle, speichern Sie die Snowflake-Anmeldeinformationen in AWS Secrets Manager, suchen Sie Ihre DataZone Amazon-Projektumgebungs-ID und rufen Sie dann an. `aws datazone create-connection`

## Schritt 1: Erstellen Sie eine Snowflake-Rolle für Amazon DataZone
<a name="snowflake-data-source-step1"></a>

Amazon DataZone stellt über eine Rolle, die Sie erstellen und der Sie bestimmte Rechte gewähren, eine Verbindung zu Snowflake her. Die Rollenzuschüsse lassen sich in vier Kategorien einteilen:
+ **Metadaten-Synchronisierung** — Amazon DataZone liest die Struktur Ihrer Tabellen und Ansichten, um den Katalog zu füllen.
+ **Abstammungssynchronisierung** — Amazon DataZone liest QUERY\_HISTORY und ACCESS\_HISTORY von Snowflake, um die Herkunft auf Spaltenebene abzuleiten.
+ **Abfragezugriff** — erforderlich für Anfragen, die über Amazon gestellt werden DataZone, einschließlich von.
+ **Warehouse-Nutzung** — erforderlich für alle Abfragen, die die Rolle ausführt.

Führen Sie die folgenden Anweisungen in Snowflake aus und ersetzen Sie die Platzhalter durch Ihre Werte:

```
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>;
```

**Wichtig**  
`GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE`ist für Lineage erforderlich. Ohne sie ist die Metadatensynchronisierung erfolgreich, es werden jedoch keine Herkunftsdatensätze erfasst.

## Schritt 2: Speichern Sie die Snowflake-Anmeldeinformationen in AWS Secrets Manager
<a name="snowflake-data-source-step2"></a>

Erstellen Sie ein Geheimnis in AWS Secrets Manager demselben AWS Konto wie Ihre DataZone Amazon-Domain. Amazon DataZone unterstützt zwei Authentifizierungsmethoden: Benutzername und Passwort oder Schlüsselpaar.

Verwenden Sie für die Authentifizierung mit Benutzername und Passwort diesen JSON-Text:

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

Verwenden Sie für die Schlüsselpaar-Authentifizierung diesen JSON-Hauptteil:

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

Kennzeichnen Sie das Geheimnis, damit Amazon es entdecken DataZone kann. Beide Tags sind erforderlich:


| Tag-Schlüssel | Wert | 
| --- | --- | 
| AmazonDataZoneDomain | Ihre DataZone Amazon-Domain-ID | 
| AmazonDataZoneProject | Ihre DataZone Amazon-Projekt-ID | 

Notieren Sie sich den ARN des Geheimnisses. Sie werden es `create-connection` in Schritt 4 weitergeben.

## Schritt 3: Finden Sie die ID Ihrer Projektumgebung
<a name="snowflake-data-source-step3"></a>

Für den `create-connection` API-Aufruf ist die ID der Projektumgebung erforderlich, in der sich die Verbindung befindet. Sie können dies aus der Projektbenutzerrolle ARN ableiten.

Die Projektbenutzerrolle ARN folgt diesem Muster:

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

Das letzte Segment nach dem letzten Unterstrich ist die Umgebungs-ID. Zum Beispiel in:

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

`58cjkfdsjfd` ist die Umgebungs-ID. Dies ist der Wert, der wie `--environment-identifier` in Schritt 4 übergeben werden muss. Die Umgebungs-ID entspricht der Tooling-Umgebung Ihres Projekts.

## Schritt 4: Erstellen Sie die Snowflake-Verbindung
<a name="snowflake-data-source-step4"></a>

Führen Sie den folgenden AWS CLI-Befehl aus und ersetzen Sie die Platzhalter durch Ihre Werte:

```
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"
        }
      }
    }'
```

### Referenz zu den Verbindungseigenschaften
<a name="snowflake-data-source-connection-properties"></a>


| Property (Eigenschaft) | Description (Beschreibung) | 
| --- | --- | 
| HOST | Die URL Ihres Snowflake-Kontos. | 
| PORT | Der Snowflake-Port. Verwenden Sie 443. | 
| DATABASE | Die zu katalogisierende Snowflake-Datenbank. | 
| WAREHOUSE | Das Snowflake-Warehouse, das Amazon zum Ausführen von Abfragen DataZone verwendet. | 
| SCHEMA | Das zu katalogisierende Snowflake-Schema. | 
| ROLE\_ARN | Die Projektbenutzerrolle ARN (siehe Schritt 3). | 
| CATALOG\_CASING\_FILTER | Steuert die Normalisierung der Groß- und Kleinschreibung für katalogisierte Identifikatoren. Gültige Werte sind UPPERCASE\_ONLY und LOWERCASE\_ONLY. Wenn nicht angegeben, ist der Standardwert. UPPERCASE\_ONLY | 
| spill\_bucket | S3-Bucket-Name für Query Spill. Erforderlich bei der Abfrage von Snowflake von. | 
| spill\_prefix | S3-Präfix für Spill im Format. <domain\_id>/<project\_id>/dev/sys/athena | 
| authenticationType | BASICfür username/password oder Schlüsselpaar-Authentifizierung. | 
| secretArn | Der ARN des in Schritt 2 erstellten Geheimnisses. | 
| snowflakeRole | Der Snowflake-Rollenname aus Schritt 1. | 
| identityMapping.usernameAttribute | Setzen Sie diesen Wert auf EMAIL. | 

## Die Verbindung wird überprüft
<a name="snowflake-data-source-verify"></a>

Rufen Sie `aws datazone get-connection` mit Ihrer Domain-ID und der Verbindungs-ID an, die von zurückgegeben wurde`create-connection`. Nach der ersten Metadatensynchronisierung werden katalogisierte Snowflake-Tabellen im DataZone Amazon-Katalog für das Projekt angezeigt.