Private Konnektivität zu externen Volumes für Amazon Web Services

Dieses Thema enthält Konfigurationsdetails zum Einrichten einer ausgehenden privaten Konnektivität zu einem externen Volume auf AWS. Der Hauptunterschied zwischen der ausgehenden öffentlichen Konnektivität und der ausgehenden privaten 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 Cloud-Speicherdienst AWS über das interne AWS-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 AWS PrivateLink verwenden, um auf von Snowflake verwaltete Iceberg-Tabellen und Iceberg-Tabellen zuzugreifen, die eine Katalogintegration für die Objektspeicherung verwenden. Darüber hinaus können Sie AWS PrivateLink für den Zugriff auf extern verwaltete Iceberg-Tabellen und Iceberg-Tabellen, die aus Delta-Dateien im Objektspeicher erstellt wurden, 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.

Einrichten einer ausgehenden privaten Konnektivität zu einem externen Volume

Um eine ausgehende private Konnektivität zu einem externen Volume einzurichten, können Sie :ref:` SQL <label-configure_external_volume_s3_private_sql>` oder Snowsight verwenden.

Verwenden von SQL

Aktualisierungen der Syntax

Die Eigenschaft USE_PRIVATELINK_ENDPOINT eines externen Volumes bestimmt, ob der Zugriff über eine private Konnektivität oder über das öffentliche Netzwerk erfolgt. Um die private Konnektivität zu nutzen, stellen Sie bei der Erstellung oder Änderung eines externen Volumes USE_PRIVATELINK_ENDPOINT = TRUE ein.

Die neue Syntax für CREATE EXTERNAL VOLUME und ALTER EXTERNAL VOLUME lautet wie folgt:

CREATE OR REPLACE EXTERNAL VOLUME <ext_volume_name>
  STORAGE_LOCATIONS =
  (
    (
      NAME = 'my-s3-loc'
      STORAGE_PROVIDER = 's3'
      STORAGE_BASE_URL = 's3://<bucket>[/<path>/]'
      STORAGE_AWS_ROLE_ARN = '<iam_role>'
      USE_PRIVATELINK_ENDPOINT = [ TRUE | FALSE ]
    )
  )
  ALLOW_WRITES=true;

ALTER EXTERNAL VOLUME <ext_volume_name>
  UPDATE STORAGE_LOCATION = '<storage_location_name>'
  USE_PRIVATELINK_ENDPOINT = [ TRUE | FALSE ];
Copy

Der Befehl DESCRIBE EXTERNAL VOLUME enthält die Eigenschaft USE_PRIVATELINK_ENDPOINT und ihren Wert.

Konfigurieren Sie den Zugriff auf externe Volumes

Verwenden Sie die folgenden Schritte, um die ausgehende private Konnektivität zum Entladen von Daten auf ein externes Volume auf AWS zu verwenden:

  1. Rufen Sie die Systemfunktion SYSTEM$PROVISION_PRIVATELINK_ENDPOINT auf, um einen privaten Endpunkt in Ihrem Snowflake VNet einzurichten, damit Snowflake sich über eine private Konnektivität mit dem externen AWS-Cloud-Speicher verbinden kann.

    Wie das folgende Beispiel zeigt, müssen Sie einen Platzhalter (*) verwenden, anstatt einen individuellen AWS S3-Bucket anzugeben. Die Verwendung des Platzhalters bedeutet nicht, dass der Zugriff auf alle S3-Buckets über eine private Verbindung erfolgt. Über den Endpunkt kann nur auf Buckets zugegriffen werden, die von einem externen Volume referenziert werden, für das der Parameter USE_PRIVATELINK_ENDPOINT aktiviert ist.

    USE ROLE ACCOUNTADMIN;
    
    SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT(
        'com.amazonaws.us-west-2.s3',
        '*.s3.us-west-2.amazonaws.com');
    
    Copy

    Diese Funktion bindet den privaten Endpunkt an den Hostnamen, sodass das externe Volume den privaten Endpunkt verwenden kann, um sich mit dem Speicherort zu verbinden, sofern AWS PrivateLink für das Objekt aktiviert ist.

  2. Rufen Sie die Funktion SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO auf.

    Wenn die Ausgabe der Funktion "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 von "APPROVED" warten.

  3. Erstellen Sie das externe Volume, und stellen Sie dabei sicher, dass die Eigenschaft USE_PRIVATELINK_ENDPOINT auf TRUE eingestellt ist. Beispiel:

    CREATE EXTERNAL VOLUME external_volume
      STORAGE_LOCATIONS =
        (
          (
            NAME = 'my-s3-loc'
            STORAGE_PROVIDER = 's3'
            STORAGE_BASE_URL = 's3://bucketinuswest2/'
            STORAGE_AWS_ROLE_ARN = 'arn:aws:iam::001234567890:role/myrole'
            USE_PRIVATELINK_ENDPOINT = TRUE
          )
        )
      ALLOW_WRITES=TRUE;
    
    Copy
  4. 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';
    
    Copy
  5. Nachdem der private Endpunkt den Status "APPROVED" hat, testen Sie das Entladen von Daten aus Snowflake auf das externe Volume.

Verwenden von Snowsight

Um den Zugriff auf externe Volumes über private Konnektivität in Snowsight einzurichten, gehen Sie wie folgt vor:

  1. Rufen Sie die Systemfunktion SYSTEM$PROVISION_PRIVATELINK_ENDPOINT auf, um einen privaten Endpunkt in Ihrem Snowflake VNet einzurichten, damit Snowflake sich über eine private Konnektivität mit dem externen AWS-Cloud-Speicher verbinden kann.

    Wie das folgende Beispiel zeigt, müssen Sie einen Platzhalter (*) verwenden, anstatt einen individuellen AWS S3-Bucket anzugeben. Die Verwendung des Platzhalters bedeutet nicht, dass der Zugriff auf alle S3-Buckets über eine private Verbindung erfolgt. Über den Endpunkt kann nur auf Buckets zugegriffen werden, die von einem externen Volume referenziert werden, für das der Parameter USE_PRIVATELINK_ENDPOINT aktiviert ist.

    USE ROLE ACCOUNTADMIN;
    
    SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT(
        'com.amazonaws.us-west-2.s3',
        '*.s3.us-west-2.amazonaws.com');
    
    Copy

    Diese Funktion bindet den privaten Endpunkt an den Hostnamen, sodass das externe Volume den privaten Endpunkt verwenden kann, um sich mit dem Speicherort zu verbinden, sofern AWS PrivateLink für das Objekt aktiviert ist.

  2. Rufen Sie die Funktion SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO auf.

    Wenn die Ausgabe der Funktion "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 von "APPROVED" warten.

  3. Folgen Sie den Schritten zum Erstellen eines externen Volumes für S3 mithilfe von Snowsight, und aktivieren Sie private Konnektivität, wenn Sie das externe Volume konfigurieren.

    Wichtig

    Um die private Konnektivität zu aktivieren, wählen Sie auf der Seite Configure external volume im Feld Connectivity die Option Private (Azure Private Endpoint) aus.

  4. 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';
    
    Copy
  5. Nachdem der private Endpunkt den Status "APPROVED" hat, testen Sie das Entladen von Daten aus Snowflake auf das externe Volume.

Entfernen eines Endpunkts

Wenn Sie den privaten Konnektivitätsendpunkt für das externe Volume nicht mehr benötigen, deaktivieren Sie die Eigenschaft USE_PRIVATELINK_ENDPOINT auf dem externen Volume, und rufen Sie dann die Systemfunktion SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT auf.