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.
Snowflake-Verbindungen
In AWS Glue 4.0 und späteren Versionen können Sie Glue for Spark verwenden, um aus Tabellen in Snowflake zu lesen und in AWS Tabellen zu schreiben. Sie können aus Snowflake mit einer SQL-Abfrage lesen. Sie können mit einer von drei Methoden eine Verbindung zu Snowflake herstellen: Standardauthentifizierung (mit Benutzername und Passwort), OAuth Authentifizierung oder Schlüsselpaar-Authentifizierung. Sie können auf Snowflake-Anmeldeinformationen verweisen, die AWS Secrets Manager über die AWS Glue Data-Verbindungen gespeichert sind. Snowflake-Anmeldeinformationen für Datenverbindung für AWS Glue for Spark werden getrennt von Data Catalog Snowflake-Anmeldeinformationen für Crawler gespeichert. Sie müssen einen SNOWFLAKE-Verbindungstyp auswählen und keinen JDBC-Verbindungstyp, der für die Verbindung mit Snowflake konfiguriert ist.
Weitere Informationen zu Snowflake finden Sie auf der Snowflake-Website
Konfiguration von Snowflake-Verbindungen
Es gibt keine AWS Voraussetzungen für die Verbindung zu Snowflake-Datenbanken, die über das Internet verfügbar sind.
Optional können Sie die folgende Konfiguration durchführen, um Ihre Verbindungsdaten mit AWS Glue zu verwalten.
Um Ihre Verbindungsdaten mit AWS Glue zu verwalten
Erstellen Sie in AWS Secrets Manager ein Geheimnis mit Ihren Snowflake-Anmeldeinformationen. Um ein Geheimnis in Secrets Manager zu erstellen, folgen Sie dem Tutorial, das in der AWS Secrets Manager Dokumentation unter Create an AWS Secrets Manager Secret verfügbar ist. Nachdem Sie das Geheimnis erstellt haben, behalten Sie den Geheimnamen
secretNamefür den nächsten Schritt bei.-
Zur OAuth Authentifizierung:
Erstellen Sie bei der Auswahl von Schlüssel/Wert-Paaren ein Paar für
snowflakeUsermit dem SchlüsselsfUserWenn Sie Schlüssel/Wert-Paare auswählen, erstellen Sie ein Paar für mit dem Schlüssel
OAUTH_CLIENT_SECRETUSER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET
-
Für die Schlüsselpaar-Authentifizierung:
Wenn Sie Schlüssel/Wert-Paare auswählen, erstellen Sie ein Paar für mit dem Schlüssel
snowflakeUsersfUserWenn Sie Schlüssel/Wert-Paare auswählen, erstellen Sie ein Paar für mit dem Schlüssel
private keypem_private_key
-
Für die Standardauthentifizierung:
Wenn Sie Schlüssel/Wert-Paare auswählen, erstellen Sie ein Paar für
snowflakeUsermit dem SchlüsselUSERNAMEWenn Sie Schlüssel/Wert-Paare auswählen, erstellen Sie ein Paar für mit dem Schlüssel
snowflakePasswordPASSWORD
-
Bei der Auswahl von Schlüssel/Wert-Paaren können Sie Ihrem Snowflake-Warehouse den Schlüssel
sfWarehousebereitstellen. -
Bei der Auswahl von Schlüssel/Wert-Paaren können Sie zusätzliche Snowflake-Verbindungseigenschaften angeben, indem Sie die entsprechenden Spark-Eigenschaftsnamen als Schlüssel verwenden. Folgende sind unterstützte Eigenschaften:
sfDatabase: Name der Snowflake-DatenbanksfSchema: Name des Snowflake-SchemassfRole: Name der Snowflake-Rolle
-
Erstellen Sie in der AWS Glue Studio-Konsole eine Verbindung, indem Sie Datenverbindungen und dann Verbindung erstellen wählen. Befolgen Sie die Schritte im Verbindungsassistenten, um den Vorgang abzuschließen:
Wählen Sie bei der Auswahl einer Datenquelle die Option „Snowflake“ und dann Weiter aus.
Geben Sie die Verbindungsdetails wie Host und Port ein. Geben Sie bei der Auswahl der Snowflake-URL des Hosts die URL der Snowflake-Instance an. Die URL verwendet einen Hostnamen im Format
. Das URL-Format kann jedoch je nach Ihrem Snowflake-Kontotyp variieren (z. B. Azure oder von Snowflake gehostet). AWSaccount_identifier.snowflakecomputing.com-
Wählen Sie bei der Auswahl der IAM-Servicerolle eine Option aus dem Dropdown-Menü. Dies ist die IAM-Rolle Ihres Kontos, die für den Zugriff auf AWS Secrets Manager und die Zuweisung von IP-Adressen verwendet wird, wenn VPC angegeben ist.
Geben Sie bei der Auswahl eines AWS Geheimnisses Folgendes an.
secretName
Legen Sie im nächsten Schritt des Assistenten die Eigenschaften für Ihre Snowflake-Verbindung fest.
Überprüfen Sie im letzten Schritt des Assistenten Ihre Einstellungen und schließen Sie dann den Vorgang ab, um Ihre Verbindung herzustellen.
Für Snowflake, das auf AWS einer Amazon VPC gehostet wird, benötigen Sie möglicherweise Folgendes:
-
Sie benötigen eine entsprechende Amazon-VPC-Konfiguration für Snowflake. Weitere Informationen zur Konfiguration Ihrer Amazon VPC finden Sie unter AWS PrivateLink & Snowflake
in der Snowflake-Dokumentation. -
Sie benötigen eine entsprechende Amazon VPC-Konfiguration für AWS Glue. Konfigurieren von Schnittstellen-VPC-Endpunkten (AWS PrivateLink) für AWS Glue (AWS PrivateLink).
-
Sie müssen eine AWS Glue Data Catalog-Verbindung erstellen, die Amazon VPC-Verbindungsinformationen bereitstellt (zusätzlich zur ID eines AWS Secrets Manager Secrets, das Ihre Snowflake-Sicherheitsanmeldedaten definiert). Ihre URL ändert sich bei der Verwendung AWS PrivateLink, wie in der Snowflake-Dokumentation beschrieben, die in einem vorherigen Artikel verlinkt wurde.
-
Sie müssen in Ihrer Auftragskonfiguration die Verbindung zum Datenkatalog als zusätzliche Netzwerkverbindung einschließen.
Lesen aus Snowflake-Tabellen
Voraussetzungen: Eine Snowflake-Tabelle, aus der Sie gerne lesen möchten. Sie benötigen den Namen der Snowflake-Tabelle,. tableName Wenn Ihr Snowflake-Benutzer keinen Standard-Namespace festgelegt hat, benötigen Sie den Snowflake-Datenbanknamen und den Schemanamen. databaseName schemaName Wenn Ihr Snowflake-Benutzer kein Standard-Warehouse-Set hat, benötigen Sie außerdem einen Warehouse-Namen. warehouseName Um auszuwählen, mit welcher zusätzlichen Netzwerkverbindung eine Verbindung hergestellt werden soll, wird der connectionName Parameter verwendet.
snowflake_read = glueContext.create_dynamic_frame.from_options( connection_type="snowflake", connection_options={ "connectionName": "connectionName", "dbtable": "tableName", "sfDatabase": "databaseName", "sfSchema": "schemaName", "sfWarehouse": "warehouseName", } )
Darüber hinaus können Sie die Parameter autopushdown und query verwenden, um einen Teil einer Snowflake-Tabelle zu lesen. Dies kann wesentlich effizienter sein als das Filtern Ihrer Ergebnisse, nachdem diese in Spark geladen wurden. Stellen Sie sich ein Beispiel vor, bei dem alle Verkäufe in derselben Tabelle gespeichert sind, Sie jedoch nur die Verkäufe eines bestimmten Geschäfts an Feiertagen analysieren müssen. Wenn diese Informationen in der Tabelle gespeichert sind, können Sie mithilfe des Prädikat-Pushdowns die Ergebnisse wie folgt abrufen:
snowflake_node = glueContext.create_dynamic_frame.from_options( connection_type="snowflake", connection_options={ "autopushdown": "on", "query": "select * from sales where store='1' and IsHoliday='TRUE'", "connectionName": "snowflake-glue-conn", "sfDatabase": "databaseName", "sfSchema": "schemaName", "sfWarehouse": "warehouseName", } )
Schreiben in Snowflake-Tabellen
Voraussetzungen: Eine Snowflake-Datenbank, in die Sie schreiben möchten. Sie benötigen einen aktuellen oder gewünschten Tabellennamen,tableName. Wenn Ihr Snowflake-Benutzer keinen Standard-Namespace festgelegt hat, benötigen Sie den Snowflake-Datenbanknamen und den Schemanamen. databaseName schemaName Wenn Ihr Snowflake-Benutzer kein Standard-Warehouse-Set hat, benötigen Sie außerdem einen Warehouse-Namen. warehouseName Um auszuwählen, mit welcher zusätzlichen Netzwerkverbindung eine Verbindung hergestellt werden soll, wird der connectionName Parameter verwendet.
glueContext.write_dynamic_frame.from_options( connection_type="snowflake", connection_options={ "connectionName": "connectionName", "dbtable": "tableName", "sfDatabase": "databaseName", "sfSchema": "schemaName", "sfWarehouse": "warehouseName", }, )
Referenz zur Snowflake-Verbindungsoption
Der Snowflake-Verbindungstyp akzeptiert die folgenden Verbindungsoptionen:
Sie können einige der Parameter in diesem Abschnitt aus einer AWS Glue-Verbindung (sfUrl,sfUser,sfPassword) abrufen. In diesem Fall müssen Sie sie nicht angeben. Sie können dies tun, indem Sie den Parameter connectionName angeben.
Mithilfe des secretId Parameters können Sie Verbindungsparameter aus AWS Secrets Manager Geheimnissen abrufen. Bei Verwendung von Secrets Manager können die folgenden Spark-Eigenschaften automatisch abgerufen werden, sofern sie im Geheimnis enthalten sind:
sfUser(mit dem SchlüsselUSERNAMEodersfUser)sfPassword(mit SchlüsselPASSWORDodersfPasswordbei Verwendung der Standardauthentifizierung)sfWarehouse(mit dem SchlüsselsfWarehouse)sfDatabase(mit dem SchlüsselsfDatabase)sfSchema(mit dem SchlüsselsfSchema)sfRole(mit dem SchlüsselsfRole)pem_private_key(mit Schlüsselpem_private_key, bei Verwendung der Schlüsselpaar-Authentifizierung)USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET(bei Verwendung der Authentifizierung OAuth )
Prioritätsreihenfolge: Wenn dieselbe Eigenschaft an mehreren Stellen angegeben ist, verwendet AWS Glue die folgende Prioritätsreihenfolge (vom höchsten zum niedrigsten):
Explizit angegebene Verbindungsoptionen in Ihrem Auftragscode
Eigenschaften der Klebeverbindung
AWS Secrets Manager geheime Werte (
secretIdwenn angegeben)Snowflake-Benutzerstandardwerte
Die folgenden Parameter werden im Allgemeinen beim Herstellen einer Verbindung mit Snowflake verwendet.
sfDatabase– Erforderlich, wenn in Snowflake kein Benutzerstandard festgelegt ist. Wird für Lesen/Schreiben verwendet. Die Datenbank, die nach dem Herstellen der Verbindung für die Sitzung verwendet werden soll.sfSchema– Erforderlich, wenn in Snowflake kein Benutzerstandard festgelegt ist. Wird für Lesen/Schreiben verwendet. Das Schema, das für die Sitzung nach dem Herstellen der Verbindung verwendet werden soll.sfWarehouse– Erforderlich, wenn in Snowflake kein Benutzerstandard festgelegt ist. Wird für Lesen/Schreiben verwendet. Das standardmäßige virtuelle Warehouse, das für die Sitzung nach dem Herstellen der Verbindung verwendet wird.sfRole– Erforderlich, wenn in Snowflake kein Benutzerstandard festgelegt ist. Wird für Lesen/Schreiben verwendet. Die Standardsicherheitsrolle, die nach dem Herstellen der Verbindung für die Sitzung verwendet wird.-
sfUrl– (Erforderlich) Wird zum Lesen/Schreiben verwendet. Gibt den Hostnamen für Ihr Konto im folgenden Format an:. Weitere Informationen zu Konto-IDs finden Sie unter Kontobezeichneraccount_identifier.snowflakecomputing.comin der Snowflake-Dokumentation. sfUser– (Erforderlich) Wird zum Lesen/Schreiben verwendet. Anmeldename für den Snowflake-Benutzer.sfPassword— (Erforderlich bei Verwendung der Basisauthentifizierung) Wird für Lesen/Schreiben verwendet. Passwort für den Snowflake-Benutzer.dbtable– Erforderlich beim Arbeiten mit vollständigen Tabellen. Wird für Lesen/Schreiben verwendet. Der Name der zu lesenden Tabelle bzw. der Tabelle, in die Daten geschrieben werden. Beim Lesen werden alle Spalten und Datensätze abgerufen.-
pem_private_key— (Erforderlich bei Verwendung der Schlüsselpaar-Authentifizierung) Wird für Lesen/Schreiben verwendet. Eine unverschlüsselte, b64-kodierte Private-Key-Zeichenfolge. Der private Schlüssel für den Snowflake-Benutzer. Es ist üblich, dies aus einer PEM-Datei zu kopieren. Weitere Informationen finden Sie unter Schlüsselpaar-Authentifizierung und Schlüsselpaar-Rotationin der Snowflake-Dokumentation. -
USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET— (Erforderlich bei Verwendung der OAuth Authentifizierung) Wird sowohl für Lese- als auch für Schreibvorgänge verwendet. Dieser Wert entspricht dem OAUTH_CLIENT_SECRET, das über die Snowflake-Sicherheitsintegration abgerufen werden kann, die so konfiguriert ist, dass sie die basierte Authentifizierung für Ihr Konto aktiviert. OAuth Weitere Informationen finden Sie in der Dokumentation zur Einrichtung der OAuth Snowflake-Sicherheitsintegration — Snowflake für benutzerdefinierte Clients konfigurieren. OAuth query– Beim Lesen mit einer Abfrage erforderlich. Wird zum Lesen verwendet. Die genaue Abfrage (SELECT-Anweisung), die ausgeführt werden soll
Die folgenden Optionen werden zum Konfigurieren spezifischer Verhaltensweisen während des Verbindungsvorgangs mit Snowflake verwendet.
-
preactions– Wird zum Lesen/Schreiben verwendet. Gültige Werte: Durch Semikolons getrennte Liste von SQL-Anweisungen als Zeichenfolge. SQL-Anweisungen werden ausgeführt, bevor Daten zwischen AWS Glue und Snowflake übertragen werden. Wenn eine Anweisung%senthält, wird%sdurch den Tabellennamen ersetzt, auf den für die Operation verwiesen wird. -
postactions– Wird zum Lesen/Schreiben verwendet. SQL-Anweisungen werden ausgeführt, nachdem Daten zwischen AWS Glue und Snowflake übertragen wurden. Wenn eine Anweisung%senthält, wird%sdurch den Tabellennamen ersetzt, auf den für die Operation verwiesen wird. -
autopushdown– Standardwert:"on". Zulässige Werte:"on","off". Dieser Parameter steuert, ob das automatische Abfrage-Pushdown aktiviert ist. Wenn Pushdown aktiviert ist, wird bei der Ausführung einer Abfrage auf Spark ein Teil der Abfrage auf den Snowflake-Server „heruntergeschoben“, wenn dies möglich ist. Dies verbessert die Leistung einiger Abfragen. Informationen darüber, ob Ihre Abfrage per Pushdown verschoben werden kann, finden Sie unter Pushdownin der Snowflake-Dokumentation.
Darüber hinaus werden einige der auf dem Snowflake Spark-Konnektor verfügbaren Optionen möglicherweise in AWS Glue unterstützt. Weitere Informationen zu den Optionen, die im Snowflake-Spark-Konnektor verfügbar sind, finden Sie unter Festlegen von Konfigurationsoptionen für den Konnektor
Snowflake-Authentifizierungsmethoden
AWS Glue unterstützt die folgenden Authentifizierungsmethoden für die Verbindung mit Snowflake:
-
Standardauthentifizierung: Geben Sie die Parameter an
sfUser.sfPassword -
Schlüsselpaar-Authentifizierung: Geben Sie die Parameter an
sfUser.pem_private_keyBei Verwendung der Schlüsselpaar-Authentifizierung ist dersfPassword-Parameter nicht erforderlich. -
OAuth Authentifizierung: Der Snowflake-Connector unterstützt den Gewährungstyp AUTHORIZATION_CODE, um Zugriff auf Ihre Snowflake-Daten anzufordern. Dieser Gewährungstyp wird als „3-beinig OAuth“ bezeichnet, da er die Weiterleitung von Benutzern zu einem Autorisierungsserver eines Drittanbieters beinhaltet, auf dem sie sich authentifizieren und den Zugriff genehmigen können. Diese Methode wird verwendet, wenn eine Verbindung über die AWS Glue Console hergestellt wird.
-
Voraussetzung: Um diese Authentifizierungsmethode zu verwenden, stellen Sie sicher, dass die folgende Einrichtung abgeschlossen ist:
-
Konfigurieren Sie Snowflake OAuth für einen benutzerdefinierten Client, indem Sie der offiziellen Snowflake-Dokumentation folgen: Snowflake für benutzerdefinierte Clients konfigurieren
. OAuth -
Geben Sie bei der Erstellung der Snowflake-Sicherheitsintegration den richtigen Umleitungs-URI ein. Beispiel: Wenn Sie die Verbindung in der DUB-Region (eu-west-1) herstellen, sollte Ihre Weiterleitungs-URI wie folgt lauten:
https://eu-west-1.console.aws.amazon.com/gluestudio/oauth -
Bewahren Sie nach dem Erstellen der Sicherheitsintegration die folgenden Informationen für die Erstellung der Glue-Verbindung auf:
OAUTH_CLIENT_ID: Dieser Wert sollte auf der Seite zur Erstellung der Glue-Verbindung als Benutzer-verwaltete Client-Anwendungs-Client-ID angegeben werden.
OAUTH_CLIENT_SECRET: Dieser Wert sollte in dem für die Verbindung verwendeten Secret unter dem Schlüssel AWS USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET gespeichert werden.
-
-
OAuth Bereiche — (Optional) Definiert die spezifischen Berechtigungen oder Zugriffsebenen, die vom Snowflake-Konto angefordert werden. Beispielsweise kann ein Bereich den Zugriff auf eine bestimmte Ressource oder einen bestimmten Vorgang einschränken.
Dieser Wert kann im folgenden Format angegeben werden:
session:role:Snowflake_Role_NameBeispiel:
session:role:ANALYST_ROLE
-
Autorisierungscode-URL — (Erforderlich) Der Endpunkt, an den der Benutzer weitergeleitet wird, um sich anzumelden und die Autorisierung zu erteilen.
Beispiel:
https://host/oauth/authorize
-
Autorisierungstoken-URL — (Erforderlich) Der Endpunkt, der zum Austausch des Autorisierungscodes gegen ein Zugriffstoken verwendet wird.
Beispiel:
https://host/oauth/token-request
-
Client-ID der benutzerverwalteten Client-Anwendung — (Erforderlich) Die eindeutige Kennung für Ihre registrierte OAuth Client-Anwendung in Snowflake
-
AWS Secret — (Erforderlich) Bezieht sich auf ein AWS Secrets Manager Manager-Geheimnis, das die folgenden Schlüssel-Wert-Paare enthält:
sfUser — Der Snowflake-Benutzername
USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET — Der geheime Client-Schlüssel, der der Client-Anwendung zugeordnet ist OAuth
-
Alle drei Authentifizierungsmethoden werden vollständig unterstützt und können mit einer beliebigen Kombination von Verbindungsoptionen, Glue-Verbindungen oder AWS Secrets Manager Geheimnissen konfiguriert werden.
Einschränkungen des Snowflake-Konnektors
Die Verbindung zu Snowflake mit AWS Glue for Spark unterliegt den folgenden Einschränkungen.
-
Dieser Konnektor unterstützt keine Auftragslesezeichen. Weitere Informationen zu Auftragslesezeichen finden Sie unter Verfolgen von verarbeiteten Daten mit Auftragslesezeichen.
-
Dieser Konnektor unterstützt keine Snowflake-Lese- und Schreibvorgänge durch Tabellen im AWS Glue-Datenkatalog mit den Methoden
create_dynamic_frame.from_catalogundwrite_dynamic_frame.from_catalog. -
Dieser Konnektor unterstützt Standardauthentifizierung, Schlüsselpaar-Authentifizierung und Authentifizierung. OAuth Andere Authentifizierungsmethoden (wie SAML) werden derzeit nicht unterstützt.
-
Dieser Konnektor wird in Streaming-Aufträgen nicht unterstützt.
-
Dieser Konnektor unterstützt anweisungsbasierte
SELECT-Abfragen beim Abrufen von Informationen (wie z. B. mit demquery-Parameter). Andere Arten von Abfragen (z. B.SHOW,DESCoder DML-Anweisungen) werden nicht unterstützt. -
Snowflake begrenzt die Größe des über Snowflake-Clients übermittelten Abfragetextes (d. h. SQL-Anweisungen) auf 1 MB pro Anweisung. Weitere Einzelheiten finden Sie unter Beschränkungen der Abfragetextgröße
.