Private Konnektivitätsendpunkte für Snowflake Open Catalog verwalten: AWS¶
Wenn die Daten für Ihre Kataloge in Ihrem Snowflake Open Catalog-Konto in Amazon Simple Storage Service (Amazon S3)-Speicher-Buckets gespeichert sind, führen Sie diese Schritte aus, um private Konnektivität für den ausgehenden Netzwerkdatenverkehr einzurichten.
Um private Konnektivität für Ihr Open Catalog-Konto zu aktivieren, müssen Sie die Einrichtungsschritte unter diesem Thema in der Regel nur einmal durchführen. Danach aktivieren Sie die ausgehende private Konnektivität für jeden Katalog in Ihrem Open Catalog-Konto.
Beispiel: Wenn Sie die Einrichtungsschritte abgeschlossen und später einen neuen Katalog namens catalog1
erstellt haben, müssen Sie normalerweise nur die ausgehende private Konnektivität für catalog1
aktivieren. Anweisungen zum Aktivieren privater Konnektivität für einen Katalog finden Sie unter Ausgehende private Konnektivität für einen Katalog aktivieren. Wenn jedoch catalog1
einen Speicher-Bucket verwendet, für den Sie die entsprechende Bucket-Richtlinie nicht aktualisiert haben, müssen Sie auch die Bucket-Richtlinie für den Bucket aktualisieren. Wenn Sie eine Bucket-Richtlinie aktualisieren, beschränken Sie den Netzwerkzugriff für den Bucket auf einen privaten Konnektivitätsendpunkt.
Voraussetzungen¶
Ihr Open Catalog-Konto und Ihr externer Cloudspeicher müssen beide in derselben AWS-Region gehostet werden.
Sie benötigen die IAM-Berechtigungen in AWS, mit denen Sie die Bucket-Richtlinie für Ihren AWS-Speicher-Bucket ändern können, in dem Ihre Iceberg-Tabellen gespeichert sind. Weitere Informationen dazu finden Sie unter Bucket-Richtlinien für Amazon S3 in der AWS-Dokumentation.
Ihre Drittanbieter-Abfrage-Engine oder Snowflake-Engine muss Zugriff auf Ihren Speicher-Bucket über AWS PrivateLink oder S3 Gateway Endpoint haben. Weitere Informationen dazu finden Sie unter Schnittstellenendpunkt konfigurieren in der AWS-Dokumentation. Wenn Sie ausgehende private Konnektivität aktivieren, kann die Engine ansonsten keine Tabellen lesen oder schreiben, die im Bucket gespeichert sind, aber Open Catalog kann Metadaten lesen bzw. in den Bucket schreiben.
Private Konnektivität für Ihr Konto einrichten¶
Folgen Sie diesen Schritten, um private Konnektivität für Ihr Open Catalog-Konto einzurichten.
Schritt 1: Eine Snowflake-CLI-Verbindung für Open Catalog erstellen¶
Um private Konnektivität in Open Catalog einzurichten, benötigen Sie eine Snowflake-CLI-Verbindung für Open Catalog. Führen Sie die folgenden Schritte aus, um diese Verbindung zu erstellen. Wenn die Snowflake-CLI noch nicht installiert ist, lesen Sie Installieren der Snowflake-CLI.
Bevor Sie beginnen¶
Um eine Snowflake-CLI-Verbindung für Open Catalog zu erstellen, benötigen Sie Ihren vollständigen Open Catalog-Kontobezeichner. Der Kontobezeichner enthält den Namen Ihrer Snowflake-Organisation und Ihres Open Catalog-Kontos, zum Beispiel <orgname>.<my-snowflake-open-catalog-account-name>
.
Informationen dazu, wie Sie den Namen Ihrer Snowflake-Organisation (
<orgname>
) finden, erhalten Sie unterSuchen von Organisations- und Kontonamen eines Kontos <https://docs.snowflake.com/en/user-guide/admin-account-identifier.html#label-account-name-find>
_.Informationen dazu, wie Sie den Namen Ihres Snowflake Open Catalog-Kontos (
<my-snowflake-open-catalog-account-name>
) finden, erhalten Sie unterKontonamen für ein Snowflake Open Catalog-Konto suchen <https://other-docs.snowflake.com/en/opencatalog/find-account-name>
_.
Wichtig
Um diese Verbindung zu erstellen, müssen Sie Open Catalog-Benutzer mit Service-Administrator-Berechtigungen sein. Informationen zu Berechtigungen für Service-Administratoren finden Sie unter Rolle des Service-Administrators.
Eine Snowflake-CLI-Verbindung für Snowflake Open Catalog hinzufügen¶
Fügen Sie eine Verbindung für das Snowflake Open Catalog-Konto hinzu, für das Sie private Konnektivität aktivieren möchten.
Fügen Sie eine Verbindung hinzu <https://docs.snowflake.com/en/developer-guide/snowflake-cli/connecting/configure-connections#add-a-connection>
_, indem Sie die folgenden Werte verwenden. Drücken Sie bei allen anderen Parametern die Eingabetaste, um die Angabe eines Werts für den Parameter zu überspringen.Konfigurationsparameter für die Verbindung
Wert
Name for this connection
Geben Sie einen Namen für die Verbindung an, z. B.
myopencatalogconnection
.Account name
Geben Sie den Namen Ihrer Snowflake-Organisation, gefolgt vom Namen Ihres Open Catalog-Kontos, in folgendem Format an:
<orgname>-<my-snowflake-open-catalog-account-name>
.Beispiel:
ABCDEFG-MYACCOUNT1
.Informationen dazu, wie Sie diese Namen finden, erhalten Sie unter
Bevor Sie beginnen
_.Username
Geben Sie Ihren Benutzernamen für Open Catalog an, z. B.
jsmith
.Password [optional]
Dieser Parameter ist nicht optional, wenn Sie eine Verbindung für Open Catalog erstellen.
Geben Sie Ihr Kennwort für Open Catalog ein, z. B.
MyPassword123456789
.Role for the connection [optional]
Dieser Parameter ist nicht optional, wenn Sie eine Verbindung für Open Catalog erstellen.
Sie müssen
POLARIS_ACCOUNT_ADMIN
eingeben.
Snowflake-CLI-Verbindung testen¶
Um Ihre CLI-Verbindung zu testen, folgen Sie diesem Beispiel, bei dem die Verbindung für
myopencatalogconnection
getestet wird:snow connection test -c myopencatalogconnection
Die Antwort sollte wie folgt aussehen:
+------------------------------------------------------------------------------+ | key | value | |----------------------------+-------------------------------------------------| | Connection name | myopencatalogconnection | | Status | OK | | Host | ABCDEFG-MYACCOUNT1.snowflakecomputing.com | | Account | ABCDEFG-MYACCOUNT1 | | User | jsmith | | Role | POLARIS_ACCOUNT_ADMIN | | Database | not set | | Warehouse | not set | +------------------------------------------------------------------------------+
Ihre Snowflake-CLI-Verbindung für Snowflake Open Catalog als Standard festlegen¶
Um sicherzustellen, dass die von Ihnen verwendete Verbindung immer über die erforderliche POLARIS_ACCOUNT_ADMIN-Rolle verfügt, können Sie die Snowflake-CLI-Verbindung, die Sie für Open Catalog erstellt haben, als Standardverbindung festlegen. Weitere Informationen zur Standardverbindung finden Sie unter Standardverbindung festlegen <https://docs.snowflake.com/en/developer-guide/snowflake-cli/connecting/configure-connections#set-the-default-connection>
_.
Folgen Sie diesem Beispiel, bei dem die
myopencatalogconnection
-Verbindung als Standard festgelegt ist:snow connection set-default myopencatalogconnection
Um zu überprüfen, ob Sie den richtigen Benutzer und die richtige Rolle verwenden, führen Sie Folgendes aus:
snow sql -q "Select current_user(); select current_role();"
Die Antwort sollte Ihren Open Catalog-Benutzernamen zurückgeben und CURRENT ROLE sollte POLARIS_ACCOUNT_ADMIN sein.
+----------------+ | CURRENT_USER() | |----------------| | JSMITH | +----------------+ select current_role(); +-----------------------+ | CURRENT_ROLE() | |-----------------------| | POLARIS_ACCOUNT_ADMIN | +-----------------------+
Schritt 2: Privaten Konnektivitätsendpunkt bereitstellen¶
Verwenden Sie Ihre Snowflake-CLI-Verbindung für Open Catalog, um die folgenden Systemfunktionen aufzurufen:
Um einen privaten Konnektivitätsendpunkt für Ihre Speicher-Buckets bereitzustellen, rufen Sie die Systemfunktion SYSTEM$PROVISION_PRIVATELINK_ENDPOINT auf.
Um zu überprüfen, ob der private Konnektivitätsendpunkt einsatzbereit ist, rufen Sie die Systemfunktion SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO auf.
Eine Anleitung finden Sie unter Private Konnektivitätsendpunkte bereitstellen in der Snowflake-Dokumentation. Denken Sie daran, dass sich die Anleitung auf ein Snowflake-Konto und nicht auf ein Snowflake Open Catalog-Konto bezieht, der Prozess in Open Catalog ist aber derselbe.
Wichtig
Sie müssen die Rolle POLARIS_ACCOUNT_ADMIN anstelle der Rolle ACCOUNTADMIN verwenden, die in der Anleitung angegeben ist.
Wenn der standardmäßigen Snowflake-CLI-Verbindung, die Sie eingerichtet haben, nicht die Rolle POLARIS_ACCOUNT_ADMIN zugewiesen ist, müssen Sie in Ihren Befehl die folgende Anweisung aufnehmen:
USE ROLE POLARIS_ACCOUNT_ADMIN;
.Bei Ihrem Befehl müssen Sie zu Escape-Zwecken unmittelbar vor
$
einen Schrägstrich einfügen. Beispiel:snow sql -q "SELECT SYSTEM\$GET_PRIVATELINK_CONFIG();"
.
Bemerkung
Sie können diesen privaten Konnektivitätsendpunkt verwenden, den Sie bereitstellen, um Zugriff auf alle Speicher-Buckets zu gewähren, die sich in derselben AWS-Region befinden, in der auch Ihr Open Catalog-Konto gehostet wird. Sie können damit keinen Zugriff auf einen Bucket gewähren, der sich in einer anderen Region befindet.
Beispiel: Privaten Konnektivitätsendpunkt bereitstellen¶
Im folgenden Beispiel wird ein PrivateLink mit externem Zugriff auf Amazon S3 erstellt, um einen Endpunkt für die Region us-west-2
zu konfigurieren:
SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT(
'com.amazonaws.us-west-2.s3',
'*.s3.us-west-2.amazonaws.com'
);
Schritt 3: Bucket-Richtlinie aktualisieren¶
Um den Netzwerkzugriff auf Ihren Speicher-Bucket auf den privaten Konnektivitätsendpunkt zu beschränken, den Sie im vorherigen Schritt in erstellt haben, aktualisieren Sie in AWS die Bucket-Richtlinie für Ihren Speicher-Bucket. Eine Anleitung finden Sie unter Zugriff auf einen bestimmten VPCendpoint beschränken in der AWS-Dokumentation. Geben Sie für <vpce-id>
in der Bucket-Richtlinie die ID des privaten Konnektivitätsendpunkts an, den Sie im vorherigen Schritt erstellt haben.
Wiederholen Sie diesen Schritt bei Bedarf für alle weiteren Buckets, die Sie mit Open Catalog verbinden möchten.
Wichtig
Stellen Sie sicher, dass Ihre Bucket-Richtlinie Berechtigungen enthält, die es Ihnen ermöglichen, über den Browser auf den Bucket und die Bucket-Richtlinie zuzugreifen, nachdem Sie sie hinzugefügt haben. Andernfalls können Sie nach der Aktualisierung Ihrer Bucket-Richtlinie über den Browser nicht mehr auf den Bucket oder die Bucket-Richtlinie zugreifen.
Bei diesem Beispiel für eine Bucket-Richtlinie können Sie über den Browser auf den Bucket und die Bucket-Richtlinie zugreifen:
{
"Version": "2012-10-17",
"Id": "Policy1234567890123",
"Statement": [
{
"Sid": "Deny public access",
"Effect": "Deny",
"Principal": "*",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion",
"s3:PutObject",
"s3:DeleteObject",
"s3:DeleteObjectVersion",
],
"Resource": [
"arn:aws:s3:::my-bucket",
"arn:aws:s3:::my-bucket/*"
],
"Condition": {
"StringNotLike": {
"aws:SourceVpc": "vpc-*"
}
}
},
{
"Sid": "Access-to-specific-VPCE-only",
"Effect": "Deny",
"Principal": "*",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion",
"s3:PutObject",
"s3:DeleteObject",
"s3:DeleteObjectVersion",
],
"Resource": [
"arn:aws:s3:::my-bucket",
"arn:aws:s3:::my-bucket/*"
],
"Condition": {
"StringNotEquals": {
"aws:SourceVpce": "vpce-xxxxxxxxxxx"
}
}
}
]
}
Ausgehende private Konnektivität für einen Katalog aktivieren¶
In diesem Abschnitt wird beschrieben, wie Sie ausgehende private Konnektivität für einen Katalog in Ihrem Open Catalog-Konto aktivieren.
Schritt 1: Private Konnektivität aktivieren¶
Sie können private Konnektivität für einen neuen oder vorhandenen Katalog aktivieren:
Private Konnektivität für einen neuen Katalog aktivieren¶
Folgen Sie den Anweisungen unter Einen Katalog mit Amazon Simple Storage Service (Amazon S3) erstellen. Stellen Sie sicher, dass der Schalter Private Link für den Katalog aktiviert ist.
Bemerkung
Wenn Sie die Bucket-Richtlinie für den Bucket, in dem die Tabellen des Katalogs gespeichert sind, noch nicht aktualisiert haben, finden Sie entsprechende Informationen unter Bucket-Richtlinie aktualisieren. Wenn Sie eine Bucket-Richtlinie aktualisieren, beschränken Sie den Netzwerkzugriff auf Ihren Speicher-Bucket auf Ihren privaten Konnektivitätsendpunkt.
Private Konnektivität für einen vorhandenen Katalog aktivieren¶
Melden Sie sich an, um den Katalog zu öffnen.
Wählen Sie im Navigationsmenü die Option Catalogs.
Wählen Sie in der Liste der Kataloge den Katalog aus, für den Sie private Konnektivität aktivieren möchten.
Setzen Sie auf der Registerkarte Catalog Details den Schalter PrivateLink auf aktiviert.
Schritt 2: Tabelle unter Verwendung der Abfrage-Engine erstellen¶
Um zu überprüfen, ob Ihre Abfrage-Engine über AWS PrivateLink mit Ihrem Katalog verbunden ist, verwenden Sie Ihre Abfrage-Engine, um eine Tabelle zu erstellen und Daten darin einzufügen. Wenn Sie keine Daten in die Tabelle einfügen können, haben Sie möglicherweise AWS PrivateLink nicht für die Abfrage-Engine konfiguriert.
Problembehandlung¶
Dieser Abschnitt enthält Lösungen für Probleme mit der ausgehenden privaten Konnektivität für den Datenverkehr im Netzwerk.
Das Schema für eine Tabelle kann nicht in Open Catalog angezeigt werden.¶
Symptom
Sie wählen in Open Catalog eine Tabelle in Ihrem Katalog aus (z. B. catalog1
), erhalten aber die folgende Fehlermeldung: „No permissions to access this resource“.
Ursache
Sie haben in AWS Ihre Bucket-Richtlinie erfolgreich aktualisiert, um den Netzwerkdatenverkehr über Ihren VPC-Endpunkt zu leiten. Allerdings haben Sie in Open Catalog keine private Konnektivität für diesen Katalog aktiviert, sodass Open Catalog nicht auf Ihren Bucket zugreifen kann.
Lösung
Aktivieren Sie private Konnektivität für den Katalog (z. B. catalog1
). Einzelheiten finden Sie unter Private Konnektivität für einen Katalog aktivieren.
„Business Critical“-Fehler beim Ausführen des Befehls SYSTEM$PROVISION_PRIVATELINK_ENDPOINT¶
Symptom
Bei Ihrer Snowflake-CLI-Verbindung haben Sie den Befehl SYSTEM\$PROVISION_PRIVATELINK_ENDPOINT
ausgeführt, der aber mit der folgenden Fehlermeldung fehlschlägt: „Business Critical or higher edition is required for this operation. Please upgrade to the valid edition and then retry.“
Ursache
Die Edition für Ihr Open Catalog-Konto ist nicht Business Critical.
Um private Konnektivität für den ausgehenden Netzwerkdatenverkehr zu aktivieren, was die Bereitstellung eines privaten Konnektivitätsendpunkts einschließt, muss die Edition für Ihr Snowflake Open Catalog-Konto „Business Critical“ sein.
Lösung
Wenden Sie sich an den Snowflake-Support, um Unterstützung beim Upgrade Ihres Open Catalog-Kontos auf Business Critical zu erhalten.