View a markdown version of this page

Connect Snowflake als Datenquelle in Amazon DataZone - Amazon DataZone

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

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

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 und DataZone Amazon-Projekte und -Umgebungen.

  • 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

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 SNOWFLAKEist 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

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

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

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

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

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