Verwalten Sie private Konnektivitätsendpunkte: AWS¶
In diesem Thema finden Sie Informationen zur Verwaltung von privaten Konnektivitätsendpunkten, die für die ausgehende private Konnektivität zu AWS verwendet werden.
Bereitstellung privater Konnektivitätsendpunkte¶
Mit der Systemfunktion SYSTEM$PROVISION_PRIVATELINK_ENDPOINT können Sie einen privaten Konnektivitätsendpunkt erstellen, indem Sie den Dienst oder die Ressource und den Hostnamen angeben. Sie müssen die Rolle ACCOUNTADMIN verwenden, wenn Sie diese Systemfunktion nutzen möchten.
Bemerkung
Wenn Sie private Konnektivität für einen externen Stagingbereich oder ein externes Volume verwenden, müssen Sie bei der Angabe des Hostnamens einen Platzhalter (*
) verwenden. Die Verwendung des Platzhalters bedeutet nicht, dass der Zugriff auf alle S3-Buckets über eine private Verbindung erfolgt. Nur Buckets, die von einem Snowflake-Objekt referenziert werden, das für private Konnektivität aktiviert ist (d. h. der externe Stagingbereich oder das externe Volume), können über den VPC-Endpunkt aufgerufen werden.
Die Funktion SYSTEM$PROVISION_PRIVATELINK_ENDPOINT akzeptiert den Namen eines Anbieters und den Hostnamen als Argumente. Sie können diese Werte mit dem Unterbefehl describe-vpc-endpoint-services
aus der AWS-Befehlszeile abrufen. Wie in der AWS-Dokumentation beschrieben, gibt dieser AWS-Unterbefehl ein JSON-Objekt mit einem ServiceName
Feld und einem PrivateDnsName
Feld zurück. Verwenden Sie die folgende Tabelle, um zu ermitteln, welche Werte Sie für die Funktion SYSTEM$PROVISION_PRIVATELINK_ENDPOINT verwenden müssen:
SYSTEM$PROVISION_PRIVATELINK_ENDPOINT Argument |
|
---|---|
|
|
|
Wenn Sie private Konnektivität für externe Stagingbereiche oder externe Volumes verwenden, müssen Sie den Wert mit einem Platzhalter verwenden. |
Um zum Beispiel einen PrivateLink mit externem Zugriff auf Amazon S3 zu erstellen, führen Sie die folgende SQL-Anweisung aus, um einen Endpunkt für us-west-2
zu konfigurieren:
SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT(
'com.amazonaws.us-west-2.s3',
'*.s3.us-west-2.amazonaws.com'
);
Wenn es sich bei dem Zieldienst um einen VPC Endpunkt-Dienst handelt, muss der Endpunkt-Dienst Snowflake erlauben, sich mit ihm zu verbinden. Bevor Sie einen Endpunkt erstellen, fügen Sie den Wert von privatelink-account-principal
aus der Ausgabe von SYSTEM$GET_PRIVATELINK_CONFIG als erlaubten Prinzipal des Endpunkts VPC hinzu.
Die folgende SQL-Anweisung konfiguriert einen Endpunkt für einen VPC-Endpunktdienst. Beachten Sie, dass sich der Dienst in der gleichen Region befinden muss wie Ihr Snowflake-Konto:
SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT(
'com.amazonaws.vpce.us-west-2.vpce-svc-012345678910f1234',
'my.onprem.storage.com'
);
Nachdem Sie einen Endpunkt erstellt haben, gibt es eine Verzögerung, bevor Sie den Endpunkt verwenden können. Informationen zur Überprüfung des Status eines erstellten Endpunkts finden Sie unter SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO.
Einrichten der Konnektivität zu einem Endpunkt, auf den nicht direkt zugegriffen werden kann¶
Nicht jeder Dienst ermöglicht es Snowflake, sich über einen Schnittstellen-Endpunkt direkt mit bestimmten Instanzen zu verbinden. In diesen Fällen können Sie stattdessen den Zugriff auf den Dienst ermöglichen, indem Sie einen Proxy einrichten und den Dienst als VPC-Endpunktdienst bereitstellen.
Eine Anleitung speziell für Amazon RDS finden Sie im Blogbeitrag Verbindung zu Amazon RDS mit privater Konnektivität von Snowflake.
Finden Sie heraus, ob ein Dienst für den direkten Zugriff verfügbar ist.¶
Snowflake kann in der Regel über eine private Konnektivität direkt auf einen AWS-Dienst zugreifen, wenn einer der folgenden Punkte zutrifft:
Der DNSName des Dienstes - seinem
PrivateDnsName
-Wert aus der Ausgabe von AWS DescribeVpcEndpointServices ist ein Platzhalter vorangestellt.Wenn der DNS-Name des Dienstes mit einem Platzhalterzeichen
*
beginnt, ist es wahrscheinlich, dass AWS den direkten Zugriff auf einzelne Ressourcen dieses Dienstes unterstützt. Der DNS-Name wird in der Regel in dieser Form angegeben:*.<service>.<region>.amazonaws.com
Der Dienst ist rein datenorientiert. AWS Bedrock Runtime ist ein Beispiel dafür.
Wenn Sie mehr über einen bestimmten Dienst erfahren möchten, lesen Sie die Dokumentation und die Blogbeiträge zu AWS.
Zugriff auf einen Dienst, wenn kein direkter Zugriff möglich ist¶
Wenn ein Dienst nicht über einen direkten Zugriff über einen Schnittstellenendpunkt verfügbar ist, können Sie den Zugriff auf den Dienst ermöglichen, indem Sie einen Proxy einrichten und den Dienst als VPC-Endpunktdienst verfügbar machen.
Beispiele für solche Dienste sind unter anderem:
Amazon EC2-Instanzen bei
ec2.us-west-2.amazonaws.com
Amazon Relational Database Service (RDS)-Server bei
rds.us-west-2.amazonaws.com
AWS für den Zugriff über einen Proxy einrichten¶
Um eine Dienstinstanz über einen Proxy bereitzustellen, richten Sie eine virtuelle private Cloud (VPC) und einen Load Balancer auf AWS ein und erstellen dann einen Snowflake Private Link-Endpunkt unter Verwendung des Dienstnamens und des Load Balancer DNS-Namens des AWS-Endpunktdienstes.
Im Folgenden werden die grundlegenden Schritte beschrieben:
Erstellen Sie auf AWS eine virtuelle private Cloud (VPC) mit Subnetzen, die drei verschiedene Verfügbarkeitszonen abdecken.
Wählen Sie anfängliche Verfügbarkeitszonen (z. B. az1 und az2) für Ihre Ressourcen. Snowflake unterstützt in einigen Regionen möglicherweise keine neueren AZs. Stellen Sie sicher, dass Endpunkte und andere Ressourcen in denselben Verfügbarkeitszonen erstellt werden, um zonenübergreifenden Datenverkehr zu vermeiden.
Stellen Sie in den Netzwerkeinstellungen für die Dienstinstanz, auf die Sie zugreifen möchten, sicher, dass sich die Instanz in der von Ihnen erstellten VPC befindet.
Erstellen Sie eine Zielgruppe, die die Dienstinstanz enthält, auf die Sie zugreifen möchten.
Erstellen Sie einen Netzwerk-Loadbalancer, der den Datenverkehr an die von Ihnen erstellte Zielgruppe weiterleitet.
Erstellen Sie einen Endpunktdienst mit dem von Ihnen erstellten Network Load Balancer.
Notieren Sie sich den Endpunkt-Dienstnamen—
endpoint_service_name
—für die Einrichtung von Snowflake für den Zugriff auf den Dienst.Führen Sie in Snowflake die folgende Abfrage aus, um den Snowflake-Konto-Prinzipal abzurufen, damit Endpunkte erstellt werden können:
SELECT key, value FROM TABLE(FLATTEN(INPUT => PARSE_JSON(SYSTEM$GET_PRIVATELINK_CONFIG())));
Suchen Sie in den Ergebnissen der Abfrage den
privatelink-account-principal
-Schlüssel, und notieren Sie seinen Wert.Aktualisieren Sie auf AWS für den von Ihnen erstellten Endpunkt-Service den Abschnitt Allow principals, um einen Prinzipal hinzuzufügen, dessen ARN der Schlüsselwert
privatelink-account-principal
von Snowflake ist.Erstellen Sie in Snowflake unter einen privaten Endpunkt zu dem von Ihnen erstellten AWS-Endpunktdienst.
Wenn Sie die Funktion SYSTEM$PROVISION_PRIVATELINK_ENDPOINT ausführen, verwenden Sie die folgenden Werte als Argumente:
SYSTEM$PROVISION_PRIVATELINK_ENDPOINT Argument
Wert aus AWS-Konfiguration
provider_service_name
AWS-Endpunkt-Service name—der
endpoint_service_name
-Wert—aus dem Detailbereich des Endpunktdienstes.host_name
DNS Name des von Ihnen erstellten Netzwerk-Load-Balancers.
Genehmigen Sie in AWS Sie die PrivateLink-Verbindung:
Navigieren Sie zu den Endpunktverbindungen für den von Ihnen erstellten Endpunktdienst.
Wählen Sie die entsprechende Endpunktverbindung im Status „Ausstehend“ aus.
Klicken Sie auf Accept Endpoint Connection Request.
Überprüfen Sie den Endpunktstatus, indem Sie die folgende Abfrage ausführen.
Stellen Sie sicher, dass der Status des Endpunkts von
pendingAcceptance
aufavailable
geändert wurde.SELECT SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO();
Entfernen Sie einen privaten Konnektivitätsendpunkt zu Diensten¶
Sie können die Systemfunktion SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT verwenden, um einen privaten Konnektivitätsendpunkt zu entfernen, indem Sie den Dienst oder die Ressource angeben.
Nachdem der Endpunkt entfernt wurde, wird der Endpunkt in eine Warteschlange gestellt, die nach 7 Tagen gelöscht wird.
Sie müssen die Rolle ACCOUNTADMIN verwenden, wenn Sie diese Systemfunktion nutzen möchten.
Um zum Beispiel einen PrivateLink mit externem Zugriff auf Amazon S3 zu entfernen, führen Sie die folgende SQL-Anweisung aus:
SELECT SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT('com.amazonaws.us-west-2.s3');
Wiederherstellung eines privaten Konnektivitätsendpunkts zu Diensten¶
Sie können die Systemfunktion SYSTEM$RESTORE_PRIVATELINK_ENDPOINT verwenden, um einen entfernten privaten Konnektivitätsendpunkt wiederherzustellen, der sich noch in der Löschwarteschlange befindet, indem Sie den Dienst oder die Ressource angeben. Wenn der Endpunkt nicht in der Löschwarteschlange gefunden wird, können Sie ihn nicht wiederherstellen.
Sie müssen die Rolle ACCOUNTADMIN verwenden, wenn Sie diese Systemfunktion nutzen möchten.
Um beispielsweise einen PrivateLink mit externem Zugriff auf Amazon S3 wiederherzustellen, führen Sie die folgende SQL-Anweisung aus:
SELECT SYSTEM$RESTORE_PRIVATELINK_ENDPOINT('com.amazonaws.us-west-2.s3');
Liste aller privaten Konnektivitätsendpunkte zu Diensten¶
Sie können die Systemfunktion SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO verwenden, um alle privaten Konnektivitätsendpunkte und Informationen über die Endpunkte in Ihrem Konto aufzulisten.
Sie müssen die Rolle ACCOUNTADMIN verwenden, wenn Sie diese Systemfunktion nutzen möchten.
Um beispielsweise alle AWS PrivateLink-Endpunkte mit AWS-Diensten aufzulisten, führen Sie die folgende SQL-Anweisung aus:
SELECT SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO();
[
{
"provider_service_name": "com.amazonaws.us-west-2.s3",
"snowflake_endpoint_name": "vpce-123456789012abcdea",
"endpoint_state": "CREATED",
"host": "*.s3.us-west-2.amazonaws.com",
"status": "Available"
},
...
]
Eine Beschreibung der Felder des JSON-Objekts, das von der Funktion zurückgegeben wird, finden Sie unter Rückgabewerte.
Bemerkung
Sie können auch die Ansicht OUTBOUND_PRIVATELINK_ENDPOINTS im Schema ACCOUNT_USAGE abfragen, um die privaten Endpunkte in Ihrem Konto aufzulisten.