Private Konnektivität zu externen Volumes für Google Cloud¶
Unter diesem Thema wird beschrieben, wie Sie eine ausgehende private Konnektivität zu einem externen Volume auf Google Cloud Storage (GCS) konfigurieren. Der Hauptunterschied zwischen ausgehender öffentlicher Konnektivität und ausgehender privater Konnektivität besteht darin, wie Sie die Eigenschaft USE_PRIVATELINK_ENDPOINT für das externe Volume festlegen.
Wenn das externe Volume so konfiguriert ist, dass es eine private Konnektivität verwendet, geht Ihre Verbindung zum Google Cloud Storage-Service über das interne Google Cloud-Netzwerk. Indem Sie Ihr externes Volume so konfigurieren, dass es eine ausgehende private Konnektivität verwendet, erhöhen Sie die Sicherheit Ihrer Datenentladeoperationen, indem Sie den öffentlichen Zugriff auf das Speicherkonto blockieren.
Weitere Informationen über die Verwendung externer Volumes zur Verbindung mit Ihrem externen Cloudspeicher für Iceberg-Tabellen finden Sie unter Externes Volume konfigurieren.
Bemerkung
Sie können Google Cloud Private Service Connect verwenden, um auf von Snowflake verwaltete Iceberg-Tabellen und Iceberg-Tabellen zuzugreifen, die eine Katalogintegration für die Objektspeicherung verwenden. Sie können derzeit keine private Konnektivität verwenden, um auf Iceberg-Tabellen zuzugreifen, die andere Katalogintegrationen verwenden.
Kosten für ausgehende private Konnektivität¶
Sie zahlen für jeden privaten Konnektivitätsendpunkt zusammen mit den insgesamt verarbeiteten Daten. Die Preise für diese Artikel finden Sie in der Snowflake Service Consumption Table.
Sie können die Kosten für diese Element ermitteln, indem Sie bei der Abfrage von Abrechnungsansichten in den Schemata ACCOUNT_USAGE und ORGANIZATION_USAGE nach den folgenden Diensttypen filtern:
OUTBOUND_PRIVATELINK_ENDPOINT
OUTBOUND_PRIVATELINK_DATA_PROCESSED
Sie können zum Beispiel die Ansicht USAGE_IN_CURRENCY_DAILY abfragen und nach folgenden Diensttypen filtern.
Hinweise¶
Sie können ausgehende öffentliche Konnektivität und ausgehende private Konnektivität für denselben Cloud-Speicherdienst konfigurieren. Wenn Sie dies tun möchten, erstellen Sie ein dediziertes externes Volume für ausgehende öffentliche Konnektivität, und geben Sie USE_PRIVATELINK_ENDPOINT = FALSE an.
Einschränkungen¶
Ausgehende private Konnektivität zu Google Cloud Storage-Volumes unterstützt keine Buckets mit mehreren Regionen.
Private Konnektivität für ein externes Volume angeben¶
Die Eigenschaft USE_PRIVATELINK_ENDPOINT eines externen Volumes bestimmt, ob der Zugriff über eine private Konnektivität oder über das öffentliche Netzwerk erfolgt. Um private Konnektivität zu nutzen, stellen Sie beim Erstellen oder Ändern eines externen Volumes USE_PRIVATELINK_ENDPOINT = TRUE ein, wie in den folgenden Beispielen gezeigt.
Verwenden Sie die folgende Syntax, um ein externes Volume zu erstellen:
CREATE OR REPLACE EXTERNAL VOLUME <ext_volume_name>
STORAGE_LOCATIONS =
(
(
NAME = 'my-gcs-loc'
STORAGE_PROVIDER = 'gcs'
STORAGE_BASE_URL = 'gcs://<bucket>/<prefix>/'
USE_PRIVATELINK_ENDPOINT = [ TRUE | FALSE ]
)
)
ALLOW_WRITES=true;
Verwenden Sie die folgende Syntax, um ein vorhandenes externes Volume zu ändern:
ALTER EXTERNAL VOLUME <ext_volume_name>
UPDATE STORAGE_LOCATION = '<storage_location_name>'
USE_PRIVATELINK_ENDPOINT = [ TRUE | FALSE ]
Der Befehl DESCRIBE EXTERNAL VOLUME enthält die Eigenschaft USE_PRIVATELINK_ENDPOINT und ihren Wert.
Bereitstellen eines privaten Endpunkts¶
Führen Sie die folgenden Schritte aus, um einen privaten Endpunkt für Ihr Google Cloud Storage-Volume bereitzustellen:
Rufen Sie in Snowflake die SYSTEM$PROVISION_PRIVATELINK_ENDPOINT-Systemfunktion auf. Geben Sie als Argumente einen regionalen Speicher-API-Endpunkt und einen Hostnamen an. Beispiel:
USE ROLE ACCOUNTADMIN; SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT( 'storage.us-east4.rep.googleapis.com', 'storage.us-east4.rep.googleapis.com');
Bemerkung
Snowflake unterstützt nur regionale Google Cloud Speicher-API-Endpunkte. Google Cloud-Buckets mit mehreren Regionen werden nicht unterstützt.
Stellen Sie mit SYSTEM$PROVISION_PRIVATELINK_ENDPOINT einen privaten Endpunkt in Ihrem Snowflake VNet bereit, damit Snowflake sich über eine private Konnektivität mit dem externen Google Cloud Storage verbinden kann. Über den Endpunkt kann nur auf Buckets zugegriffen werden, die von einem externen Volume referenziert werden, für das die Eigenschaft USE_PRIVATELINK_ENDPOINT aktiviert ist.
Rufen Sie in Snowflake die Funktion SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO auf.
Wenn die Ausgabe von SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO
„Status“: „APPROVED“enthält, kann Ihre Verbindung von Snowflake zu Ihrem Speicherkonto eine private Konnektivität nutzen.Sie können mit den nächsten Schritten fortfahren, während Sie auf den Status
„APPROVED“warten.
Konfigurieren Sie den Zugriff auf externe Volumes¶
Führen Sie die folgenden Schritte aus, um die private Konnektivität zu Ihrem externen Speichervolume zu konfigurieren:
Erstellen Sie das externe Volume, und stellen Sie die Eigenschaft USE_PRIVATELINK_ENDPOINT auf TRUE ein. Beispiel:
CREATE EXTERNAL VOLUME external_volume STORAGE_LOCATIONS = ( ( NAME = 'my-gcs-loc' STORAGE_PROVIDER = 'gcs' STORAGE_BASE_URL = 'gcs://<bucket>/<prefix>/' USE_PRIVATELINK_ENDPOINT = true ) ) ALLOW_WRITES=true;
Verwenden Sie den Befehl CREATE ICEBERG TABLE, um eine Iceberg-Tabelle zu erstellen, die auf das externe Volume verweist. Beispiel:
CREATE ICEBERG TABLE rand_table (data STRING) BASE_LOCATION='table' EXTERNAL_VOLUME=external_volume CATALOG='snowflake';
Nachdem der private Endpunkt den Status „APPROVED“ hat, testen Sie das Entladen von Daten aus Snowflake in das externe Volume.
Private Konnektivität deaktivieren¶
Wenn Sie für das externe Volume keine private Konnektivität mehr benötigen, können Sie die Eigenschaft USE_PRIVATELINK_ENDPOINT des Volumes auf FALSE einstellen und dann die Systemfunktion SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT zum Entfernen des Endpunkts aufrufen. Beispiel:
ALTER EXTERNAL VOLUME <ext_volume_name>
UPDATE STORAGE_LOCATION = '<storage_location_name>'
USE_PRIVATELINK_ENDPOINT = false;
SELECT SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT('storage.us-east4.rep.googleapis.com');