AWS PrivateLink und Snowflake Open Catalog¶
In diesem Thema wird beschrieben, wie Sie AWS PrivateLink so konfigurieren, dass Ihr Snowflake Open Catalog-Konto direkt mit Ihrer Abfrage-Engine verbunden wird, indem Sie eine eingehende private Konnektivität verwenden.
Voraussetzungen¶
Ihr Snowflake Open Catalog-Konto wird auf AWS gehostet.
Sie verfügen über die notwendigen Berechtigungen, um Ihren AWS-DNS-Service mit der privaten Konnektivitäts-URL für Ihr Open Catalog-Konto zu konfigurieren. Eine Anleitung finden Sie unter AWS DNS (Route 53) für den Zugriff auf Snowflake über einen PrivateLink konfigurieren in der Snowflake Community.
Schritt 1: Aktivieren Sie den AWS-PrivateLink¶
In diesem Verfahren aktivieren Sie den AWS-PrivateLink für Ihr Open Catalog-Konto. Diese Konfiguration ermöglicht es der Abfrage-Engine, sich über eine private Konnektivität mit Open Catalog zu verbinden. Sie benötigen den 12-stelligen Bezeichner für Ihr Amazon Web Services (AWS)-Konto und den Wert des Verbundtokens, der die Zugangsdaten für einen Benutzer im Verbund enthält.
Um den Wert des Verbundtokens zu erhalten, führen Sie den folgenden Befehl über die AWS-CLI aus und kopieren Sie den Wert in einen Texteditor:
aws sts get-federation-token --name sam
Melden Sie sich bei Snowflake Open Catalog an.
Wählen Sie im Navigationsmenü Settings aus.
Wählen Sie Authorize aus.
Aktivieren Sie im Dialog Authorize Private Link die private Konnektivität für Ihr Konto:
Geben Sie in das Feld ID den 12-stelligen Bezeichner für Ihr Amazon Web Services (AWS)-Konto ein.
Geben Sie unter Federated token den Wert des Verbundtokens ein, den Sie in einen Texteditor kopiert haben.
Wählen Sie Save aus.
Schritt 3: Rufen Sie die Einstellungen Ihres Open Catalog-Kontos ab¶
Rufen Sie diese Einstellungen ab, die Sie später zum Erstellen und Konfigurieren eines VPC-Endpunkts und Ihres VPC-Netzwerks benötigen.
Melden Sie sich bei Snowflake Open Catalog an.
Wählen Sie im Navigationsmenü Settings aus.
Kopieren Sie auf der Seite „Settings“ die Werte für die folgenden Einstellungen in einen Texteditor:
PrivateLink-Konto-URL
URL Für regionenloses PrivateLink-Konto
PrivateLink-OCSP-URL
Regionslose PrivateLink-OCSP-URL
VPCE-Service-ID
Sie fügen diese Werte ein, wenn Sie einen VPC Endpunkt (VPCE) erstellen und konfigurieren, Ihr VPC-Netzwerk konfigurieren und eine Verbindung zu Open Catalog über den AWS-PrivateLink herstellen.
Eine Beschreibung der einzelnen Einstellungen finden Sie unter Rückgabewerte für die Systemfunktion SYSTEM $ GET_PRIVATELINK_CONFIG in der Snowflake-Dokumentation. In diesem Thema sind die Namen der Kontoeinstellungen im Format JSON angegeben.
Bemerkung
Denken Sie daran, dass sich die Beschreibung ggf. auf ein Snowflake-Konto bezieht, Ihr Wert aber tatsächlich für Ihr Snowflake Open Catalog-Konto gilt. Die privatelink-account-url
ist zum Beispiel die URL für Ihr Snowflake Open Catalog-Konto.
Optional: Um diese Werte im Format JSON abzurufen, erstellen Sie eine Snowflake CLI-Verbindung für Open Catalog und rufen Sie dann die Systemfunktion SYSTEM$GET_PRIVATELINK_CONFIG auf.
In der Snowflake-Dokumentation entspricht die
privatelink-vpce-id
der VPCE-Service-ID in Open Catalog.
Schritt 4: Erstellen und Konfigurieren eines VPC-Endpunkts¶
In diesem Verfahren erstellen und konfigurieren Sie einen entsprechenden VPC-Endpunkt (VPCE) in Ihrer AWS-VPC-Umgebung.
Bemerkung
Wenn Sie bereits einen VPC-Endpunkt für Ihr Snowflake-Konto erstellt haben und das Konto sich in der gleichen Bereitstellung wie Ihr Open Catalog-Konto befindet, ist die Erstellung eines neuen VPC-Endpunkts für Ihr Open Catalog-Konto nicht erforderlich. Sie können diesen Schritt auch überspringen.
Eine Anleitung finden Sie unter Erstellen und Konfigurieren eines VPC-Endpunkts (VPCE) in der Snowflake-Dokumentation, beginnend mit Schritt 2.
Schritt 5: Konfigurieren Ihres VPC-Netzwerks¶
Um Ihr VPC-Netzwerk zu konfigurieren, erstellen Sie CNAME-Einträge in Ihrem DNS-Dienst, um die entsprechenden Endpunktwerte aus Ihren Open Catalog-Kontoeinstellungen für private Konnektivität in den DNS-Namen Ihres VPC-Endpunkts aufzulösen.
Eine Anleitung finden Sie unter Konfigurieren Ihres VPC-Netzwerks in der Snowflake-Dokumentation. Denken Sie daran, dass diese Anleitungen für Snowflake gelten, so dass einige der darin erwähnten Features nicht auf Open Catalog zutreffen. Zum Beispiel ist regionless-snowsight-privatelink-url
für Snowsight vorgesehen, das in Open Catalog nicht unterstützt wird.
Wenn Sie weitere Hilfe bei der Konfiguration von DNS benötigen, wenden Sie sich an Ihren internen AWS-Administrator.
Schritt 6: Verbinden Sie sich mit Open Catalog über den AWS-PrivateLink¶
Um eine Dienstverbindung zu registrieren und Ihre Abfrage-Engine über den AWS-PrivateLink mit Snowflake Open Catalog zu verbinden, verwenden Sie den folgenden Code:
import pyspark from pyspark.sql import SparkSession spark = SparkSession.builder.appName('iceberg_lab') \ .config('spark.jars.packages', 'org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.4.1,<maven_coordinate>') \ .config('spark.sql.extensions', 'org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions') \ .config('spark.sql.defaultCatalog', 'opencatalog') \ .config('spark.sql.catalog.opencatalog', 'org.apache.iceberg.spark.SparkCatalog') \ .config('spark.sql.catalog.opencatalog.type', 'rest') \ .config('spark.sql.catalog.opencatalog.uri','https://<open_catalog_privatelink_account_url>/polaris/api/catalog') \ .config('spark.sql.catalog.opencatalog.header.X-Iceberg-Access-Delegation','vended-credentials') \ .config('spark.sql.catalog.opencatalog.credential','<client_id>:<client_secret>') \ .config('spark.sql.catalog.opencatalog.warehouse','<catalog_name>') \ .config('spark.sql.catalog.opencatalog.scope','PRINCIPAL_ROLE:<principal_role_name>') \ .getOrCreate()
Parameter¶
Bemerkung
Stellen Sie sicher, dass Sie Ihren DNS-Dienst so einrichten, dass er dem Wert entspricht, den Sie für <open_catalog_account_identifier>
angeben.
Parameter |
Beschreibung |
---|---|
|
Gibt den Namen des Katalogs an, mit dem eine Verbindung hergestellt werden soll. |
|
Gibt die Maven-Koordinate für Ihren externen Anbieter von Cloud Storage an:
|
|
Gibt die Client-ID an, die der Dienstprinzipal verwenden soll. |
|
Legt das Client-Geheimnis fest, das der Dienstprinzipal verwenden soll. |
|
Gibt die URL für die Verbindung zu Ihrem Snowflake Konto über den AWS-PrivateLink oder Azure Private Link an.
|
|
Gibt die Prinzipalrolle an, die dem Dienstprinzipal gewährt wird. |
Schritt 7 (Optional): Erstellen Sie eine Katalogintegration für Snowflake¶
Wenn Sie Snowflake zur Abfrage von mit Open Catalog verwalteten Tabellen verwenden, erstellen Sie einen Katalog für Snowflake, der eine private IP-Adresse verwendet. Um diese Katalogintegration zu erstellen, muss sich Ihr Snowflake-Konto in der gleichen Bereitstellung befinden wie Ihr Open Catalog-Konto.
Ein Beispiel finden Sie unter Beispiel: Katalogintegration, die eine private IP-Adresse verwendet <https://docs.snowflake.com/en/user-guide/tables-iceberg-open-catalog-query#example-catalog-integration-that-uses-a-private-ip-address>
_ in der Snowflake Dokumentation.
Bemerkung
Sie können auch private Konnektivität für die Snowflake Open Catalog UI konfigurieren. Diese Konfiguration in Verbindung mit der Konfiguration der privaten Konnektivität für Ihr Open Catalog-Konto ermöglicht Ihnen den Zugriff auf die Open Catalog UI über private Konnektivität statt über das öffentliche Internet.
Um diesen Zugang zu konfigurieren, siehe Private Konnektivität für Snowflake Open Catalog konfigurieren UI.