Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Connexions Snowflake
Vous pouvez utiliser AWS Glue for Spark pour lire et écrire dans des tables dans Snowflake dans AWS Glue 4.0 et versions ultérieures. Vous pouvez lire depuis Snowflake à l'aide d'une requête SQL. Vous pouvez vous connecter à Snowflake en utilisant l'une des trois méthodes suivantes : authentification de base (à l'aide du nom d'utilisateur et du mot de passe), OAuth authentification ou authentification par paire de clés. Vous pouvez vous référer aux informations d'identification Snowflake stockées AWS Secrets Manager via les connexions AWS Glue Data. Les informations d'identification Snowflake pour AWS Glue for Spark sont stockées séparément des informations d'identification Snowflake du catalogue de données pour les robots d'exploration. Vous devez choisir un type de connexion SNOWFLAKE et non un type de connexion JDBC configuré pour se connecter à Snowflake.
Pour en savoir plus sur Snowflake, consultez le site web Snowflake
Configuration des connexions Snowflake
Il n'y a aucune AWS condition préalable pour se connecter aux bases de données Snowflake disponibles sur Internet.
Vous pouvez éventuellement effectuer la configuration suivante pour gérer vos informations de connexion avec AWS Glue.
Pour gérer vos informations de connexion avec AWS Glue
Dans AWS Secrets Manager, créez un secret à l'aide de vos informations d'identification Snowflake. Pour créer un secret dans Secrets Manager, suivez le didacticiel disponible dans la section Créer un AWS Secrets Manager secret dans la AWS Secrets Manager documentation. Après avoir créé le secret, conservez le nom du secret
secretNamepour l'étape suivante.-
Pour OAuth l'authentification :
Lorsque vous sélectionnez des paires clé/valeur, créez une paire pour
snowflakeUseravec la clésfUserLorsque vous sélectionnez des paires clé/valeur, créez une paire pour
OAUTH_CLIENT_SECRETavec la cléUSER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET
-
Pour l'authentification par paire de clés :
Lorsque vous sélectionnez des paires clé/valeur, créez une paire pour
snowflakeUseravec la clésfUserLorsque vous sélectionnez des paires clé/valeur, créez une paire pour
private keyavec la clépem_private_key
-
Pour l'authentification de base :
Lorsque vous sélectionnez des paires clé/valeur, créez une paire pour
snowflakeUseravec la cléUSERNAMELorsque vous sélectionnez des paires clé/valeur, créez une paire pour
snowflakePasswordavec la cléPASSWORD
-
Lorsque vous sélectionnez des paires clé/valeur, vous pouvez fournir à votre entrepôt Snowflake la clé
sfWarehouse. -
Lorsque vous sélectionnez des paires clé/valeur, vous pouvez fournir des propriétés de connexion Snowflake supplémentaires en utilisant les noms de propriété Spark correspondants comme clés. Les propriétés prises en charge sont les suivantes :
sfDatabase: nom de la base de données SnowflakesfSchema: nom du schéma SnowflakesfRole: nom du rôle Snowflake
-
Dans la console AWS Glue Studio, créez une connexion en choisissant Data Connections, puis Create connection. Suivez les étapes décrites dans l’assistant de connexion pour finaliser le processus :
Lorsque vous sélectionnez une source de données, sélectionnez Snowflake, puis Suivant.
Saisissez les détails de connexion tels que l’hôte et le port. Lorsque vous saisissez l’URL Snowflake hôte, indiquez l’URL de votre instance Snowflake. L’URL utilisera généralement un nom d’hôte sous la forme
. Cependant, le format de l'URL peut varier en fonction du type de compte Snowflake (par exemple AWS, Azure ou hébergé par Snowflake).account_identifier.snowflakecomputing.com-
Lorsque vous sélectionnez le rôle de service IAM, choisissez dans le menu déroulant. Il s'agit du rôle IAM de votre compte qui sera utilisé pour accéder à l'adresse IP AWS Secrets Manager et l'attribuer si un VPC est spécifié.
Lorsque vous sélectionnez un AWS secret, fournissez
secretName.
À l’étape suivante de l’assistant, définissez les propriétés de votre connexion Snowflake.
Dans la dernière étape de l’assistant, examinez vos paramètres, puis terminez le processus de création de votre connexion.
Pour Snowflake hébergé sur AWS un Amazon VPC, vous aurez peut-être besoin des éléments suivants :
-
Vous aurez besoin d'une configuration Amazon VPC appropriée pour Snowflake. Pour plus d'informations sur la configuration de votre Amazon VPC, consultez AWS PrivateLink et Snowflake
dans la documentation Snowflake. -
Vous aurez besoin d'une configuration Amazon VPC appropriée pour Glue AWS . Configuration de points de terminaison d’un VPC d’interface (AWS PrivateLink) pour AWS Glue (AWS PrivateLink).
-
Vous devrez créer une connexion AWS Glue Data Catalog qui fournit les informations de connexion Amazon VPC (en plus de l'identifiant d'un AWS Secrets Manager secret qui définit vos informations de sécurité Snowflake). Votre URL changera lors de l'utilisation AWS PrivateLink, comme décrit dans la documentation Snowflake dont le lien figure dans un article précédent.
-
Vous aurez besoin de la configuration de votre tâche pour inclure la connexion au catalogue de données en tant que connexion réseau supplémentaire.
Lecture à partir de tables Snowflake
Conditions préalables : une table Snowflake à partir de laquelle vous souhaitez lire. Vous aurez besoin du nom de la table Snowflake,. tableName Si aucun espace de noms par défaut n'est défini pour votre utilisateur Snowflake, vous aurez besoin du nom de la base de données Snowflake et du nom du schéma. databaseName schemaName De plus, si votre utilisateur Snowflake n'a pas défini d'entrepôt par défaut, vous aurez besoin d'un nom d'entrepôt. warehouseName Pour sélectionner la connexion réseau supplémentaire à laquelle se connecter, le connectionName paramètre sera utilisé.
snowflake_read = glueContext.create_dynamic_frame.from_options( connection_type="snowflake", connection_options={ "connectionName": "connectionName", "dbtable": "tableName", "sfDatabase": "databaseName", "sfSchema": "schemaName", "sfWarehouse": "warehouseName", } )
De plus, vous pouvez utiliser les paramètres autopushdown et query pour lire une partie d'une table Snowflake. Cela peut être nettement plus efficace que de filtrer vos résultats une fois qu'ils ont été chargés dans Spark. Prenons un exemple où toutes les ventes sont stockées dans la même table, mais où vous n'avez besoin d'analyser que les ventes d'un certain magasin pendant les jours fériés. Si ces informations sont stockées dans la table, vous pouvez utiliser le pushdown de prédicat pour récupérer les résultats comme suit :
snowflake_node = glueContext.create_dynamic_frame.from_options( connection_type="snowflake", connection_options={ "autopushdown": "on", "query": "select * from sales where store='1' and IsHoliday='TRUE'", "connectionName": "snowflake-glue-conn", "sfDatabase": "databaseName", "sfSchema": "schemaName", "sfWarehouse": "warehouseName", } )
Écrire sur les tables Snowflake
Conditions préalables : une base de données Snowflake sur laquelle vous souhaitez écrire. Vous aurez besoin d'un nom de table actuel ou souhaité,tableName. Si aucun espace de noms par défaut n'est défini pour votre utilisateur Snowflake, vous aurez besoin du nom de la base de données Snowflake et du nom du schéma. databaseName schemaName De plus, si votre utilisateur Snowflake n'a pas défini d'entrepôt par défaut, vous aurez besoin d'un nom d'entrepôt. warehouseName Pour sélectionner la connexion réseau supplémentaire à laquelle se connecter, le connectionName paramètre sera utilisé.
glueContext.write_dynamic_frame.from_options( connection_type="snowflake", connection_options={ "connectionName": "connectionName", "dbtable": "tableName", "sfDatabase": "databaseName", "sfSchema": "schemaName", "sfWarehouse": "warehouseName", }, )
Référence des options de connexion Snowflake
Le type de connexion Snowflake accepte les options de connexion suivantes :
Vous pouvez récupérer certains paramètres de cette section à partir d'une connexion AWS Glue (sfUrl,sfUser,sfPassword), auquel cas vous n'êtes pas obligé de les fournir. Pour ce faire, fournissez le paramètre connectionName.
Vous pouvez récupérer les paramètres de connexion à partir des AWS Secrets Manager secrets à l'aide du secretId paramètre. Lorsque vous utilisez Secrets Manager, les propriétés Spark suivantes peuvent être automatiquement récupérées si elles sont présentes dans le secret :
sfUser(à l’aide d’une cléUSERNAMEousfUser)sfPassword(à l'aide d'PASSWORDune clé ousfPassword, lors de l'utilisation de l'authentification de base)sfWarehouse(à l’aide d’une clésfWarehouse)sfDatabase(à l’aide d’une clésfDatabase)sfSchema(à l’aide d’une clésfSchema)sfRole(à l’aide d’une clésfRole)pem_private_key(en utilisant une clépem_private_key, lors de l'utilisation de l'authentification par paire de clés)USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET(lors de l'utilisation de OAuth l'authentification)
Ordre de priorité des propriétés : lorsque la même propriété est spécifiée à plusieurs emplacements, AWS Glue utilise l'ordre de priorité suivant (du plus haut au plus bas) :
Options de connexion explicitement fournies dans votre code de tâche
Propriétés de connexion à la colle
AWS Secrets Manager valeurs secrètes (lorsqu'elles
secretIdsont spécifiées)Paramètres utilisateur par défaut de Snowflake
Les paramètres suivants sont généralement utilisés lors de la connexion à Snowflake.
sfDatabase: obligatoire si aucune valeur par défaut de l'utilisateur n'est définie dans Snowflake. Utilisé pour la lecture/l'écriture. La base de données à utiliser pour la session après la connexion.sfSchema: obligatoire si aucune valeur par défaut de l'utilisateur n'est définie dans Snowflake. Utilisé pour la lecture/l'écriture. Le schéma à utiliser pour la session après la connexion.sfWarehouse: obligatoire si aucune valeur par défaut de l'utilisateur n'est définie dans Snowflake. Utilisé pour la lecture/l'écriture. L'entrepôt virtuel par défaut à utiliser pour la session après la connexion.sfRole: obligatoire si aucune valeur par défaut de l'utilisateur n'est définie dans Snowflake. Utilisé pour la lecture/l'écriture. Le rôle de sécurité par défaut à utiliser pour la session après la connexion.-
sfUrl: (obligatoire) utilisé pour la lecture/l'écriture. Indique le nom d'hôte de votre compte au format suivant :. Pour plus d'informations sur les identifiants de compte, consultez Identifiants de compteaccount_identifier.snowflakecomputing.comdans la documentation de Snowflake. sfUser: (obligatoire) utilisé pour la lecture/l'écriture. Nom de connexion de l'utilisateur Snowflake.sfPassword— (Obligatoire lors de l'utilisation de l'authentification de base) Utilisé pour la lecture/écriture. Mot de passe de l'utilisateur Snowflake.dbtable: obligatoire lorsque vous travaillez avec des tables complètes. Utilisé pour la lecture/l'écriture. Le nom de la table à lire ou de la table dans laquelle les données sont écrites. Lors de la lecture, toutes les colonnes et tous les enregistrements sont récupérés.-
pem_private_key— (Obligatoire lors de l'utilisation de l'authentification par paire de clés) Utilisé pour la lecture/écriture. Chaîne de clé privée codée en b64 non chiffrée. Clé privée de l’utilisateur Snowflake. Il est courant de la copier à partir d’un fichier PEM. Pour plus d’informations, consultez Authentification par paire de clés et rotation des paires de clésdans la documentation Snowflake. -
USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET— (Obligatoire lors de l'utilisation de l' OAuth authentification) Utilisé à la fois pour les opérations de lecture et d'écriture. Cette valeur correspond au code OAUTH_CLIENT_SECRET, qui peut être obtenu à partir de l'intégration de sécurité Snowflake configurée pour activer l'authentification basée sur votre compte. OAuth Pour plus de détails, reportez-vous à la documentation de configuration de votre intégration OAuth de sécurité Snowflake - Configurer Snowflake OAuthpour des clients personnalisés. query: obligatoire lors de la lecture avec une requête. Utilisé pour la lecture. La requête exacte (instructionSELECT) à exécuter
Les options suivantes sont utilisées pour configurer des comportements spécifiques lors du processus de connexion à Snowflake.
-
preactions: utilisé pour la lecture/l'écriture. Valeurs valides : liste d'instructions SQL séparées par des points-virgules sous forme de chaîne. Les instructions SQL sont exécutées avant le transfert des données entre AWS Glue et Snowflake. Si une instruction contient%s,%sest remplacé par le nom de table référencé pour l'opération. -
postactions: utilisé pour la lecture/l'écriture. Les instructions SQL sont exécutées après le transfert des données entre AWS Glue et Snowflake. Si une instruction contient%s,%sest remplacé par le nom de table référencé pour l'opération. -
autopushdown:"on"par défaut. Valeurs valides :"on","off". Ce paramètre contrôle si le pushdown automatique des requêtes est activé. Lorsque l'option pushdown est activée, si une partie de la requête peut être « poussée vers le bas » sur le serveur Snowflake, elle est poussée vers le bas au moment de l'exécution de la requête sur Spark. Cela améliore les performances de certaines requêtes. Pour savoir si votre requête peut être poussée vers le bas, consultez Pushdowndans la documentation de Snowflake.
En outre, certaines des options disponibles sur le connecteur Snowflake Spark peuvent être prises en charge dans Glue AWS . Pour plus d'informations sur les options disponibles sur le connecteur Snowflake Spark, consultez la section Réglage des options de configuration du connecteur
Méthodes d’authentification Snowflake
AWS Glue prend en charge les méthodes d'authentification suivantes pour se connecter à Snowflake :
-
Authentification de base : fourniture
sfUseretsfPasswordparamètres. -
Authentification par paire de clés : fourniture
sfUseret paramètres.pem_private_keyLorsque vous utilisez l’authentification par paire de clés, le paramètresfPasswordn’est pas obligatoire. -
OAuth authentification : le connecteur Snowflake prend en charge le type de subvention AUTHORIZATION_CODE pour demander l'accès à vos données Snowflake. Ce type de subvention est appelé « triple OAuth », car il implique de rediriger les utilisateurs vers un serveur d'autorisation tiers où ils peuvent s'authentifier et approuver l'accès. Cette méthode est utilisée lors de la création d'une connexion via la console AWS Glue.
-
Prérequis : pour utiliser cette méthode d'authentification, assurez-vous que la configuration suivante est terminée :
-
Configurez Snowflake OAuth pour un client personnalisé en suivant la documentation officielle de Snowflake : Configurer OAuth Snowflake
pour les clients personnalisés. -
Définissez l'URI de redirection correcte lors de la création de l'intégration de sécurité Snowflake. Par exemple : si vous créez la connexion dans la région DUB (eu-west-1), votre URI de redirection doit être :
https://eu-west-1.console.aws.amazon.com/gluestudio/oauth -
Après avoir créé l'intégration de sécurité, conservez les informations suivantes à utiliser lors de la création de la connexion Glue :
OAUTH_CLIENT_ID : Cette valeur doit être fournie en tant qu'ID client de l'application client gérée par l'utilisateur sur la page de création de la connexion Glue.
OAUTH_CLIENT_SECRET : Cette valeur doit être stockée dans le secret utilisé pour la connexion, sous la clé AWS USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET.
-
-
OAuth Champs d'application — (Facultatif) Définit les autorisations ou niveaux d'accès spécifiques demandés au compte Snowflake. Par exemple, un champ d'application peut limiter l'accès à une ressource ou à une opération particulière.
Cette valeur peut être spécifiée au format suivant :
session:role:Snowflake_Role_NameExemple :
session:role:ANALYST_ROLE
-
URL du code d'autorisation — (obligatoire) Le point de terminaison sur lequel l'utilisateur est redirigé pour se connecter et accorder l'autorisation.
Exemple :
https://host/oauth/authorize
-
URL du jeton d'autorisation — (obligatoire) Le point de terminaison utilisé pour échanger le code d'autorisation contre un jeton d'accès.
Exemple :
https://host/oauth/token-request
-
ID client de l'application client gérée par l'utilisateur — (obligatoire) L'identifiant unique de votre application OAuth client enregistrée dans Snowflake
-
AWS Secret — (obligatoire) Fait référence à un secret du Gestionnaire de AWS Secrets contenant les paires clé-valeur suivantes :
SFuser - Le nom d'utilisateur Snowflake
USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET - Le secret client associé à l'application cliente OAuth
-
Les trois méthodes d'authentification sont entièrement prises en charge et peuvent être configurées à l'aide de n'importe quelle combinaison d'options de connexion, de connexions Glue ou de AWS Secrets Manager secrets.
Limites du connecteur Snowflake
La connexion à Snowflake avec AWS Glue for Spark est soumise aux restrictions suivantes.
-
Ce connecteur ne prend pas en charge les signets de tâches. Pour plus d’informations sur les signets de tâche, consultez Suivi des données traitées à l'aide de signets de tâche.
-
Ce connecteur ne prend pas en charge les lectures et écritures Snowflake via les tables du catalogue de données AWS Glue à l'aide des méthodes
create_dynamic_frame.from_catalogetwrite_dynamic_frame.from_catalog. -
Ce connecteur prend en charge l'authentification de base, l'authentification par paire de clés et OAuth l'authentification. Les autres méthodes d'authentification (telles que SAML) ne sont actuellement pas prises en charge.
-
Ce connecteur n'est pas pris en charge dans les tâches de streaming.
-
Ce connecteur prend en charge les requêtes basées sur des instructions
SELECTlors de la récupération d'informations (par exemple avec le paramètrequery). Les autres types de requêtes (telles queSHOW,DESCou les instructions DML) ne sont pas pris en charge. -
Snowflake limite la taille du texte de la requête (c'est-à-dire les instructions SQL) soumis par les clients Snowflake à 1 Mo par instruction. Pour plus d'informations, consultez Limites de la taille du texte de requête
.