Private Konnektivität zu externen Stagingbereichen auf AWS¶
Dieses Thema enthält Konfigurationsdetails zum Einrichten einer ausgehenden privaten Konnektivität zu einem externen Stagingbereich auf AWS. Der Hauptunterschied zwischen der ausgehenden öffentlichen Konnektivität und der ausgehenden privaten Konnektivität besteht darin, wie Sie die Speicherintegration oder den Stagingbereich 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 AWS S3-Stagingbereich über das interne AWS-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.
Aktualisierungen der Syntax¶
- Speicherintegration
Sie können die Eigenschaft
USE_PRIVATELINK_ENDPOINT
angeben, wenn Sie eine Speicherintegration erstellen, die einen oder mehrere Speicherorte hat:CREATE OR REPLACE STORAGE INTEGRATION my_int ... USE_PRIVATELINK_ENDPOINT = { TRUE | FALSE }
Sie können eine Speicherintegration ändern und die Eigenschaft
USE_PRIVATELINK_ENDPOINT
festlegen:ALTER STORAGE INTEGRATION my_int SET USE_PRIVATELINK_ENDPOINT = { TRUE | FALSE }
- Externe Stagingbereiche
Ein Stagingbereich, der auf eine Speicherintegration verweist, die die Eigenschaft
USE_PRIVATELINK_ENDPOINT
angibt, erbt die private Endpunktkonfiguration. Daher müssen Sie die EigenschaftUSE_PRIVATELINK_ENDPOINT
nicht im Stagingbereich angeben, und Sie können den Stagingbereich nicht ändern, um die EigenschaftUSE_PRIVATELINK_ENDPOINT
einzustellen.Wenn Sie die Eigenschaft
CREDENTIALS
des Stagingbereichs verwenden, anstatt auf eine Speicherintegration zu verweisen, müssen Sie die EigenschaftUSE_PRIVATELINK_ENDPOINT
angeben, wenn Sie den Stagingbereich erstellen oder ändern.CREATE OR REPLACE STAGE my_sas_private_stage URL = '...' CREDENTIALS=(AWS_KEY_ID='1a2b3c' AWS_SECRET_KEY='4x5y6z') USE_PRIVATELINK_ENDPOINT = { TRUE | FALSE } ALTER STAGE my_sas_private_stage SET USE_PRIVATELINK_ENDPOINT = { TRUE | FALSE }
Der Befehl DESCRIBE STAGE enthält die Eigenschaft
USE_PRIVATELINK_ENDPOINT
und ihren Wert.
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 AWS. Sie müssen den Ablauf ändern, wenn Sie die Eigenschaft CREDENTIALS
des Stagingbereichs verwenden, anstatt auf eine Speicherintegration zu verweisen.
Rufen Sie in Snowflake die Systemfunktion SYSTEM$PROVISION_PRIVATELINK_ENDPOINT auf, um einen privaten Endpunkt für die Konnektivität in Ihrem Snowflake VNet bereitzustellen, damit Snowflake eine Verbindung zu Ihrem externen AWS S3-Speicher über die private Konnektivität herstellen 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. Nur Buckets, die von einem externen Stagingbereich referenziert werden, der für private Konnektivität konfiguriert ist, können über den VPC-Endpunkt aufgerufen werden.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 die Speicherintegration den privaten Endpunkt zur Verbindung mit dem Speicherort verwenden kann.
Rufen Sie in Snowflake 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 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 von
"APPROVED"
warten.Schränken Sie den Zugriff auf den S3-Bucket auf den Zugriff nur über den VPC-Endpunkt ein, indem Sie die Bucket-Richtlinie wie folgt aktualisieren.
{ "Sid": "Access-to-specific-VPCE-only", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::001234567890:role/myrole" }, "Action": "s3:*", "Resource": [ "arn:aws:s3:::mybucket1", "arn:aws:s3:::mybucket1/*" ], "Condition": { "StringNotEquals": { "aws:SourceVpce": "vpce-01c31eb5f4a1e817d" }, }, }
Erstellen Sie eine Speicherintegration, die sowohl die eingeschränkte Rolle
STORAGE_AWS_ROLE_ARN
als auch die EigenschaftUSE_PRIVATELINK_ENDPOINT
angibt:CREATE OR REPLACE STORAGE INTEGRATION outbound_private_link_int TYPE = EXTERNAL_STAGE STORAGE_PROVIDER = 'S3' STORAGE_AWS_ROLE_ARN = 'arn:aws:iam::001234567890:role/myrole' STORAGE_ALLOWED_LOCATIONS = ('s3://mybucket1/path1/'); USE_PRIVATELINK_ENDPOINT = TRUE ENABLED = TRUE;
Erstellen Sie einen externen Stagingbereich, der auf die Speicherintegration verweist:
CREATE OR REPLACE STAGE my_storage_private_stage URL = 's3://mybucket1/path1/' STORAGE_INTEGRATION = outbound_private_link_int;
Nachdem der private Endpunkt den Status „APPROVED“ hat, testen Sie das Entladen von Daten aus Snowflake in den externen Stagingbereich:
COPY INTO @my_storage_private_stage FROM mytable FILE_FORMAT = (FORMAT_NAME = my_csv_format);
Sehen Sie sich das Ergebnis in Ihrem AWS-Stagingbereich an.
Entfernen eines Endpunkts¶
Wenn Sie den privaten Konnektivitäts-Endpunkt für den externen Stagingbereich nicht mehr benötigen, deaktivieren Sie die Eigenschaft USE_PRIVATELINK_ENDPOINT
auf dem Stagingbereich oder der Speicherintegration, und rufen Sie dann die Systemfunktion SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT auf.