Private Konnektivität zu externen Stagingbereichen für Google Cloud

Unter diesem Thema wird beschrieben, wie Sie eine ausgehende private Konnektivität zu einem externen Stagingbereich auf Google Cloud konfigurieren. Der Hauptunterschied zwischen der ausgehenden öffentlichen Konnektivität und der ausgehenden privaten Konnektivität besteht darin, wie Sie die Speicherintegration konfigurieren. Sie können zum Beispiel die Eigenschaft USE_PRIVATELINK_ENDPOINT für die Speicherintegration angeben und dann im externen Stagingbereich auf diese Speicherintegration verweisen. Der externe Stagingbereich erbt die Konfiguration der privaten Endpunkte von der Speicherintegration. Anschließend erfolgt Ihre Verbindung zum Google Cloud-Stagingbereich über das interne Google Cloud-Netzwerk. Indem Sie Ihre Speicherintegration und den Stagingbereich so konfigurieren, dass sie eine ausgehende private Konnektivität verwenden, erhöhen Sie die Sicherheit Ihrer Datenentladeoperationen, indem Sie den öffentlichen Zugriff auf das Speicherkonto blockieren.

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 dasselbe Speicherkonto konfigurieren. Wenn Sie dies tun möchten, erstellen Sie eine dedizierte Speicherintegration für ausgehende öffentliche Konnektivität und geben Sie USE_PRIVATELINK_ENDPOINT = FALSE an.

Einschränkungen

Ausgehende private Konnektivität zu einem Google Cloud-Stagingbereich unterstützt keine Buckets mit mehreren Regionen.

Private Konnektivität für eine Speicherintegration angeben

Um beim Erstellen, Ersetzen oder Ändern einer Speicherintegration private Konnektivität anzugeben, fügen Sie die USE_PRIVATELINK_ENDPOINT-Eigenschaft hinzu, wie in den folgenden Beispielen gezeigt. Um private Konnektivität zu nutzen, stellen Sie USE_PRIVATELINK_ENDPOINT = TRUE für die Integration ein.

Speicherintegration

Die folgenden Beispiele zeigen, wie Sie die USE_PRIVATELINK_ENDPOINT-Eigenschaft angeben können, wenn Sie eine Speicherintegration erstellen, die einen oder mehrere Speicherorte hat:

CREATE OR REPLACE STORAGE INTEGRATION my_int
  TYPE=EXTERNAL_STAGE
  STORAGE_PROVIDER='gcs'
  STORAGE_ALLOWED_LOCATIONS=('gcs://<bucket>/<prefix>/')
  USE_PRIVATELINK_ENDPOINT = { TRUE | FALSE }
Copy

Das folgende Beispiel zeigt, wie Sie eine Speicherintegration ändern und die USE_PRIVATELINK_ENDPOINT-Eigenschaft festlegen können:

ALTER STORAGE INTEGRATION my_int
  SET USE_PRIVATELINK_ENDPOINT = { TRUE | FALSE }
Copy
Externe Stagingbereiche

Aktualisierungen für USE_PRIVATELINK_ENDPOINT-Syntax werden nicht unterstützt, wenn Sie den Stagingbereich erstellen oder ändern. Das folgende Beispiel zeigt, wie Sie die Speicherintegration ändern müssen, um die URL des neuen oder geänderten Stagingbereichs zu verwenden:

CREATE OR REPLACE STAGE my_gcs_stage
  URL = 'gcs://<bucket>/<prefix>/'
  STORAGE_INTEGRATION=my_int
Copy

Konfigurieren Sie den externen Stagingbereich

Diese Schritte sind einzigartig für die Verwendung einer ausgehenden privaten Konnektivität mit einer Speicherintegration zum Entladen von Daten in einen externen Stagingbereich auf Google Cloud.

  1. 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');
    
    Copy

    Bemerkung

    Snowflake unterstützt nur regionale Google Cloud Speicher-API-Endpunkte. Google Cloud-Buckets mit mehreren Regionen werden nicht unterstützt.

    Verwenden von SYSTEM$PROVISION_PRIVATELINK_ENDPOINT, um einen privaten Endpunkt in Ihrem Snowflake-VNet bereitzustellen, bindet den privaten Endpunkt an den Hostnamen. Dadurch kann die Speicherintegration mit Ihrem externen Google Cloud-Stagingbereich mithilfe von privater Konnektivität verbunden werden.

  2. Rufen Sie in Snowflake die Funktion SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO auf.

    Wenn die Ausgabe von SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO den „Status“: „APPROVED“ enthält, kann Ihre Verbindung von Snowflake zu Ihrem Speicherkonto die private Konnektivität nutzen (nachdem die anderen erforderlichen Snowflake-Objekte für die ausgehende private Konnektivität aktiviert wurden).

    Sie können mit den nächsten Schritten fortfahren, während Sie auf den Status „APPROVED“ warten.

  3. Erstellen Sie eine Speicherintegration, und stellen Sie sicher, dass Sie TRUE als Wert für die USE_PRIVATELINK_ENDPOINT-Eigenschaft angeben. Beispiel:

    CREATE OR REPLACE STORAGE INTEGRATION outbound_private_link_int
      TYPE = EXTERNAL_STAGE
      STORAGE_PROVIDER = 'gcs'
      STORAGE_ALLOWED_LOCATIONS = ('gcs://mybucket1/path1/'')
      USE_PRIVATELINK_ENDPOINT = true
      ENABLED = true;
    
    Copy

    Informationen zum Erstellen einer Rolle für die Speicherintegration finden Sie unter Konfigurieren einer Integration für Google Cloud Storage.

  4. Erstellen Sie einen externen Stagingbereich, der auf die Speicherintegration verweist. Beispiel:

    CREATE OR REPLACE STAGE my_gcs_stage
      URL = 'gcs://mybucket1/path1/'
      STORAGE_INTEGRATION = outbound_private_link_int;
    
    Copy
  5. Nachdem der private Endpunkt den Status „APPROVED“ hat, testen Sie das Entladen von Daten aus Snowflake in den externen Stagingbereich. Beispiel:

    COPY INTO @my_gcs_stage
      FROM mytable
      FILE_FORMAT = (FORMAT_NAME = my_csv_format);
    
    Copy
  6. Sehen Sie sich das Ergebnis in Ihrem Google Cloud-Stagingbereich an.

Private Konnektivität deaktivieren

Wenn Sie für den externen Stagingbereich keine private Konnektivität mehr benötigen, können Sie die Eigenschaft USE_PRIVATELINK_ENDPOINT der Speicherintegration auf FALSE einstellen und dann die Systemfunktion SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT zum Entfernen des Endpunkts aufrufen. Beispiel:

USE ROLE ACCOUNTADMIN;

ALTER STORAGE INTEGRATION my_int
  SET USE_PRIVATELINK_ENDPOINT = false;

SELECT SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT('storage.us-east4.rep.googleapis.com');
Copy