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 ];
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:
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');
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.
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.Erstellen Sie das externe Volume, und stellen Sie dabei sicher, dass die Eigenschaft
USE_PRIVATELINK_ENDPOINT
aufTRUE
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;
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 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.