AWS PrivateLink et Snowflake Open Catalog¶
Ce chapitre décrit comment configurer AWS PrivateLink pour connecter directement votre compte Snowflake Open Catalog à votre moteur de requête en utilisant la connexion 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 connexion 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 : Activer 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 connexion privée. Vous aurez besoin de l’identificateur à 12 chiffres de votre compte Amazon Web Services (AWS) et de la valeur du jeton fédéré qui contient les identifiants d’accès pour un utilisateur fédéré.
Pour obtenir la valeur du jeton fédéré, exécutez la commande suivante en utilisant la syntaxe 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 connexion privée pour votre compte :
Dans le champ ID, saisissez l’identificateur à 12 chiffres de votre compte Amazon Web Services (AWS).
Pour Jeton fédéré, saisissez la valeur du jeton fédéré que vous avez copiée dans un éditeur de texte.
Sélectionnez Enregistrer.
Étape 3 : Récupération de vos paramètres de 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 :
URL de compte PrivateLink
URL de PrivateLink sans région
PrivateLink OCSP URL
URL PrivateLink OCSP sans région
ID de service VPCE
Vous collez ces valeurs lorsque vous créez et configurez un point de terminaison VPC (VPCE), configurez votre réseau VPC, et vous connectez à Open Catalog via AWS PrivateLink.
Pour obtenir une description de chaque paramètre, voir Valeurs renvoyées pour la fonction système SYSTEM$GET_PRIVATELINK_CONFIG dans la documentation Snowflake. Dans ce chapitre, les noms des paramètres de compte sont au format JSON.
Note
N’oubliez pas que, le cas échéant, la description fait référence à un compte Snowflake, mais que votre valeur vient en fait de votre compte Snowflake Open Catalog. Par exemple, l’privatelink-account-url
est l’URL pour votre compte Snowflake Open Catalog.
En option : Pour récupérer ces valeurs au format JSON, Créez une CLI Snowflake de connexion pour Open Catalog, puis appelez la fonction système SYSTEM$GET_PRIVATELINK_CONFIG.
Dans la documentation Snowflake,
privatelink-vpce-id
correspond à l’ID du service VPCE dans Open Catalog.
Étape 4 : Créer et configurer un point de terminaison VPC¶
Dans cette procédure, vous créez et configurez un point de terminaison VPC correspondant (VPCE) dans votre environnement AWS VPC.
Note
Si vous avez déjà créé un point de terminaison VPC pour votre compte Snowflake, et que le compte se trouve dans le même déploiement que votre compte Open Catalog, créer un nouveau point de terminaison VPC pour votre compte Open Catalog n’est pas nécessaire. Vous pouvez éventuellement ignorer cette étape.
Pour obtenir des instructions, voir [Créer et configurer un point de terminaison VPC (VPCE)] (https://docs.snowflake.com/en/user-guide/admin-security-privatelink#create-and-configure-a-vpc-endpoint-vpce) dans la documentation Snowflake, en commençant par l’étape 2.
Étape 5 : Configurer votre réseau VPC¶
Pour configurer votre réseau VPC, créez des enregistrements CNAME dans votre service DNS pour résoudre les valeurs de point de terminaison appropriées de vos Paramètres de compte Open Catalog pour la connexion privée vers le nom DNS de votre point de terminaison VPC.
Pour obtenir des instructions, voir Configurer votre réseau VPC dans la documentation Snowflake. N’oubliez pas que ces instructions concernent Snowflake, donc certaines des fonctionnalités mentionnées ne s’appliquent pas à Open Catalog. Par exemple, regionless-snowsight-privatelink-url
est pour Snowsight, qui n’est pas pris en charge dans Open Catalog.
Pour obtenir de l’aide supplémentaire sur la configuration DNS, contactez votre administrateur AWS interne.
Étape 6 : Connexion à Open Catalog via AWS PrivateLink¶
Pour enregistrer une connexion de 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
Configurez votre service DNS pour qu’il corresponde à la valeur que vous spécifiez 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 l’ID client à utiliser par le principal de service. |
|
Spécifie le secret client à utiliser par le principal de service. |
|
Spécifie l’URL pour vous connecter à votre compte Snowflake en utilisant AWS PrivateLink ou Azure Private Link.
|
|
Spécifie le rôle principal accordé au principal de service. |
Étape 7 (facultative) : Créer une intégration de catalogue pour Snowflake¶
Si vous utilisez Snowflake pour interroger 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 de 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 Snowflake.
Note
Vous pouvez également configurer la connexion privée pour l’UI de Snowflake Open Catalog. Cette configuration, combinée à la configuration de la connexion privée pour votre compte Open Catalog, vous permet d’accéder à l’UI d’Open Catalog via une connexion privée plutôt que sur l’Internet public.
Pour configurer cet accès, voir Configurer la connectivité privée pour l’UI Snowflake Open Catalog.