AWS PrivateLink et Snowflake Open Catalog¶
Cette rubrique décrit comment configurer AWS PrivateLink pour connecter directement votre compte Snowflake Open Catalog à votre moteur de requête en utilisant la connectivité privée entrante.
Conditions préalables¶
Votre compte Snowflake Open Catalog est hébergé sur AWS.
Vous disposez des autorisations nécessaires pour configurer votre service AWS DNS avec l’URL de connectivité privée pour votre compte Open Catalog. Pour obtenir des conseils, voir Comment configurer le service AWS DNS (Route 53) pour accéder à Snowflake via un PrivateLink dans la communauté Snowflake.
Étape 1 : Activez AWS PrivateLink¶
Dans cette procédure, vous activez AWS PrivateLink pour votre compte Open Catalog. Cette configuration permet au moteur de requête de se connecter à Open Catalog via une connectivité privée. Vous aurez besoin de l’identificateur à 12 chiffres de votre compte Amazon Web Services (AWS) et de la valeur du jeton d’accès qui contient les identifiants d’accès d’un utilisateur fédéré.
Pour obtenir la valeur du jeton fédéré, exécutez la commande suivante à l’aide de AWS CLI et copiez la valeur dans un éditeur de texte :
aws sts get-federation-token --name sam
Connectez-vous à Snowflake Open Catalog.
Dans le menu de navigation, sélectionnez Paramètres.
Sélectionnez Autoriser.
Dans la boîte de dialogue Autoriser Private Link, activez la connectivité privée pour votre compte :
Dans le champ ID, saisissez l’identificateur à 12 chiffres de votre compte Amazon Web Services (AWS).
Pour le jeton fédéré, entrez la valeur du jeton fédéré que vous avez copiée dans un éditeur de texte.
Sélectionnez Enregistrer.
Étape 3 : Récupérez les paramètres de votre compte Open Catalog¶
Récupérez ces paramètres, dont vous aurez besoin ultérieurement pour créer et configurer un point de terminaison VPC et votre réseau VPC.
Connectez-vous à Snowflake Open Catalog.
Dans le menu de navigation, sélectionnez Paramètres.
Sur la page Paramètres, copiez les valeurs des paramètres suivants dans un éditeur de texte :
Compte PrivateLink : URL
Compte PrivateLink sans région : URL
URLOCSPPrivateLink
URLOCSPPrivateLink sans région
ID service VPCE
Vous collerez ces valeurs lors de la création et de la configuration d’un point de terminaison VPC (VPCE), de la configuration de votre réseau VPC , et de la connexion à Open Catalog via AWS PrivateLink.
Pour une description de chaque paramètre, voir Valeurs de retour pour la fonction système SYSTEM$GET_PRIVATELINK_CONFIG dans la documentation de Snowflake. Dans cette rubrique, les noms des paramètres des comptes sont au format JSON.
Note
N’oubliez pas que, le cas échéant, la référence est celle d’un compte Snowflake, mais que votre valeur est en fait celle de votre compte Snowflake Open Catalog. Par exemple, l”privatelink-account-url
est l’URL de votre compte Snowflake Open Catalog.
Facultatif : pour récupérer ces valeurs au format JSON, créez une connexion Snowflake CLI pour Open Catalog, puis appelez la fonction système SYSTEM$GET_PRIVATELINK_CONFIG.
Dans la documentation de Snowflake,
privatelink-vpce-id
correspond au service VPCE ID dans Open Catalog.
Étape 4 : Créez et configurez un VPC point de terminaison¶
Dans cette procédure, vous créez et configurez un point de terminaison VPC (VPCE) dans votre environnement AWS VPC.
Note
Si vous avez déjà créé un point de terminaison VPC pour votre compte Snowflake et que ce compte se trouve dans le même déploiement que votre compte Open Catalog, il n’est pas nécessaire de créer un nouveau point de terminaison VPC pour votre compte Open Catalog. Vous pouvez éventuellement sauter cette étape.
Pour plus d’instructions, voir Créer et configurer un point de terminaison VPC (VPCE) dans la documentation de Snowflake, en commençant par l’étape 2.
Étape 5 : configurez votre réseau VPC¶
Pour configurer votre réseau VPC, créez des enregistrements CNAME dans votre service DNS pour récupérer les valeurs de terminaison appropriées des paramètres de compte Open Catalog pour la connectivité privée dans le nom DNS de votre point de terminaison VPC.
Pour obtenir des instructions, consultez la section Configurer votre réseau VPC dans la documentation de Snowflake. N’oubliez pas que ces instructions concernent Snowflake, et que certaines des fonctions qui y sont mentionnées ne s’appliquent donc pas à Open Catalog. Par exemple, regionless-snowsight-privatelink-url
correspond à Snowsight, qui n’est pas pris en charge par Open Catalog.
Pour toute aide supplémentaire concernant la configuration DNS, contactez votre administrateur interne AWS.
Étape 6 : Connectez-vous à Open Catalog via AWS PrivateLink¶
Pour enregistrer une connexion au service et connecter votre moteur de requête à Snowflake Open Catalog via AWS PrivateLink, utilisez le code :
import pyspark from pyspark.sql import SparkSession spark = SparkSession.builder.appName('iceberg_lab') \ .config('spark.jars.packages', 'org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.4.1,<maven_coordinate>') \ .config('spark.sql.extensions', 'org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions') \ .config('spark.sql.defaultCatalog', 'opencatalog') \ .config('spark.sql.catalog.opencatalog', 'org.apache.iceberg.spark.SparkCatalog') \ .config('spark.sql.catalog.opencatalog.type', 'rest') \ .config('spark.sql.catalog.opencatalog.uri','https://<open_catalog_privatelink_account_url>/polaris/api/catalog') \ .config('spark.sql.catalog.opencatalog.header.X-Iceberg-Access-Delegation','vended-credentials') \ .config('spark.sql.catalog.opencatalog.credential','<client_id>:<client_secret>') \ .config('spark.sql.catalog.opencatalog.warehouse','<catalog_name>') \ .config('spark.sql.catalog.opencatalog.scope','PRINCIPAL_ROLE:<principal_role_name>') \ .getOrCreate()
Paramètres¶
Note
Veillez à ce que votre service DNS soit paramétré pour correspondre à la valeur spécifiée pour <open_catalog_account_identifier>
.
Paramètre |
Description |
---|---|
|
Spécifie le nom du catalogue auquel se connecter. |
|
Spécifie les coordonnées Maven pour votre fournisseur de stockage Cloud externe :
|
|
Spécifie la valeur ID client que le principal de service doit utiliser. |
|
Spécifie le secret client que le principal de service doit utiliser. |
|
Spécifie l’URL pour se connecter à votre compte Snowflake à l’aide de AWS PrivateLink ou d’Azure Private Link.
|
|
Spécifie le rôle principal attribué au principal de service. |
Étape 7 (facultative) : créez une intégration de catalogue pour Snowflake¶
Si vous utilisez Snowflake pour effectuer des requêtes sur des tables gérées par Open Catalog, créez un catalogue pour Snowflake qui utilise une adresse IP privée. Pour créer cette intégration de catalogue, votre compte Snowflake doit être dans le même déploiement que votre compte Open Catalog.
Pour un exemple, voir Exemple : Intégration d'un catalogue qui utilise une adresse IP privée <https://docs.snowflake.com/en/user-guide/tables-iceberg-open-catalog-query#example-catalog-integration-that-uses-a-private-ip-address>
_ dans la documentation de Snowflake.
Note
Vous pouvez également configurer la connectivité privée pour l’UI Snowflake Open Catalog. Cette configuration, associée à la configuration de la connectivité privée pour votre compte Open Catalog, vous permet d’accéder à l’UI Open Catalog par une connectivité privée plutôt que via l’internet public.
Pour configurer cet accès, voir Configurer la connectivité privée pour l’UI Snowflake Open Catalog..