Private Konnektivität zu externen Volumes für AWS

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. 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.

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.

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.