Présentation des points de terminaison REST Snowpipe pour charger les données

Cette rubrique fournit une vue d’ensemble des détails d’utilisation lors de l’appel des points de terminaison REST publics pour charger des données et extraire des rapports d’historique de chargement.

Dans ce chapitre :

Authentification

Les appels vers des points de terminaison REST publics de Snowpipe utilisent l’authentification par clé, plutôt que l’authentification par nom d’utilisateur/mot de passe classique, car le service d’intégration ne conserve pas les sessions client.

Pour suivre le principe général du moindre privilège, nous recommandons de créer un utilisateur et un rôle séparés à utiliser pour l’intégration de fichiers à l’aide d’un canal. L’utilisateur doit être créé avec ce rôle comme son rôle par défaut, et le rôle doit avoir l’ensemble minimum d’autorisations nécessaires pour insérer des fichiers dans la table cible en vue de charger des données.

Flux de processus

Votre application cliente appelle un point de terminaison public REST avec une liste de noms de fichiers de données et un nom de canal référencé (des SDKs Java et Python sont fournis pour votre confort). Si de nouveaux fichiers de données correspondant à la liste sont découverts dans la zone de préparation, ils sont mis en file d’attente pour le chargement. Les ressources de calcul fournies par Snowflake chargent les données de la file d’attente dans une table Snowflake en fonction des paramètres définis dans le canal.

Le diagramme suivant montre le déroulement du processus de l’API REST Snowpipe :

Snowpipe Process Flow
  1. Les fichiers de données sont copiés dans une zone de préparation interne (Snowflake) ou externe (Amazon S3, Google Cloud Storage ou Microsoft Azure).

  2. Un client appelle le point de terminaison insertFiles avec une liste des fichiers à intégrer et un canal défini.

    Le point de terminaison déplace ces fichiers dans une file d’attente d’acquisition.

  3. Un entrepôt virtuel fourni par Snowflake charge les données des fichiers en file d’attente dans la table cible en fonction des paramètres définis dans le canal spécifié.

Workflow

Cette section fournit une vue d’ensemble de haut niveau du workflow de configuration et de chargement.

Configuration de Snowpipe

  1. Créer un objet mis en zone de préparation nommé dans lequel vos fichiers de données seront préparés. Snowpipe prend à la fois en charge les zones de préparation internes (Snowflake) et externes, comme des compartiments S3.

  2. Créez un objet de canal à l’aide de CREATE PIPE.

  3. Configurez la sécurité pour l’utilisateur qui exécutera le chargement continu des données. Si vous prévoyez de limiter les charges de données Snowpipe à un seul utilisateur, vous n’avez besoin de configurer l’authentification par paire de clés qu’une seule fois pour cet utilisateur. Après cela, vous n’avez plus qu’à accorder des privilèges de contrôle d’accès sur les objets de base de données utilisés pour chaque chargement de données.

  4. Installez un client SDK (Java ou Python) pour appeler les points de terminaison publics REST de Snowpipe.

Utilisation de l’API REST Snowpipe pour charger les données

Option 1 : Utiliser un client pour appeler l’API REST

Utilisez un client pour appeler l’API REST. Un exemple de code Java et Python SDK est fourni. Pour plus d’informations, voir Option 1 : Chargement des données à l’aide de l’API REST de Snowpipe.

  1. Appelez un point de terminaison REST avec une liste de fichiers à charger lors de la mise en zone de préparation.

  2. Récupérez l’historique de chargement.

Option 2 : Utiliser AWS Lambda pour appeler l’API REST

Automatisez Snowpipe en utilisant une fonction AWS Lambda pour appeler l’API REST. Une fonction Lambda peut appeler l’API REST pour charger des données à partir de fichiers stockés dans Amazon S3 uniquement. Pour plus d’informations, voir Option 2 : Automatiser Snowpipe avec AWS Lambda.

  1. Créez une fonction AWS Lambda qui appelle l’API REST Snowpipe pour charger les données à partir de votre zone de préparation externe (c.-à-d. S3).

  2. Récupérez l’historique de chargement.