Planification d’une fonction externe pour AWS

Cette rubrique vous aide à vous préparer à créer une fonction externe pour AWS (Amazon Web Services) en utilisant la console de gestion AWS ou un modèle AWS CloudFormation fourni par Snowflake.

Dans ce chapitre :

Conditions préalables

Ces instructions supposent que vous êtes un utilisateur expérimenté de la console de gestion AWS.

Vous avez besoin des éléments suivants :

  • Un compte avec AWS, y compris des privilèges pour :

    • Créer des rôles AWS via IAM (gestion des identités et des accès).

    • Créer des fonctions AWS Lambda.

    • Créer un point de terminaison API Gateway.

  • Un compte Snowflake dans lequel vous disposez des privilèges ACCOUNTADMIN ou un rôle avec le privilège CREATE INTEGRATION.

  • Si vous prévoyez d’utiliser un point de terminaison privé, vous avez besoin de votre ID de Cloud privé virtuel (VPC). (Vous devez utiliser un ID de VPC et non un ID de point de terminaison VPC. Les IDs de points de terminaison VPC peuvent changer au fil du temps).

    Si vous n’avez pas encore votre ID de VPC, vous pouvez le trouver en exécutant la commande suivante dans l’interface Web de Snowflake :

    select system$get_snowflake_platform_info();
    
    Copy

    La sortie devrait ressembler à ce qui suit :

    {"snowflake-vpc-id":["vpc-12345678"]}
    
    Copy

    Enregistrez l’ID de VPC. Après avoir décidé de créer votre fonction externe en utilisant la console de gestion AWS ou un modèle AWS CloudFormation, copiez l’ID de VPC dans la feuille de calcul de suivi appropriée :

Choix de votre type de point de terminaison : point de terminaison régional vs. point de terminaison privé

Vous accédez à un service proxy (tel que Amazon API Gateway) via une URI, souvent appelé point de terminaison. Les instructions pour créer votre Amazon API Gateway vous demandent de choisir l’un des types de points de terminaison suivants :

  • Un point de terminaison régional.

  • Un point de terminaison privé.

Les informations suivantes peuvent vous aider à choisir le type de point de terminaison.

Un point de terminaison régional peut être accessible à travers les régions AWS ou même les plates-formes Cloud. Votre instance Snowflake, votre service proxy et votre service à distance peuvent tous se trouver dans des régions différentes ou même sur des plates-formes Cloud différentes. Par exemple, une instance de Snowflake fonctionnant sur Azure pourrait envoyer des requêtes à un point de terminaison régional Amazon API Gateway, qui à son tour pourrait transmettre des données à un service distant fonctionnant sur GCP.

Un point de terminaison privé peut être configuré pour n’autoriser l’accès qu’au sein d’une région. Par exemple, vous pouvez configurer un point de terminaison privé pour permettre l’accès uniquement à partir d’un VPC (Cloud privé virtuel) Snowflake dans la même région AWS via . La communication entre un VPC Snowflake et un point de terminaison privé utilise AWS PrivateLink.

Pour plus de détails sur les types de points de terminaison sur AWS, voir :

Si vous souhaitez utiliser un point de terminaison privé et que vous n’êtes pas sûr de la région que vous utilisez, vous pouvez rechercher votre région en procédant de l’une des manières suivantes :

  • Appelez la fonction SQL CURRENT_REGION() (par exemple SELECT CURRENT_REGION()).

  • Vérifiez le nom d’hôte de votre compte Snowflake, qui indique normalement le fournisseur de services Cloud et la région. Pour plus d’informations sur les noms d’hôtes, les régions et les fournisseurs de services Cloud relatifs aux comptes, voir Régions Cloud prises en charge.

Pour utiliser un point de terminaison privé, votre compte doit remplir les conditions suivantes :

  • Édition Business Critical (ou supérieure) de Snowflake.

Choix de la méthode de création de la fonction externe

Snowflake fournit des instructions sur deux façons de créer une fonction externe sur AWS :

  • Interface Web de la console de gestion AWS

  • Modèle AWS CloudFormation fourni par Snowflake

Console de gestion AWS

Vous pouvez utiliser la console de gestion AWS pour créer une fonction Lambda (en tant que service distant) et une instance Amazon API Gateway (en tant que service mandataire). Si vous choisissez cette méthode, vous utilisez également la console de gestion AWS pour configurer les paramètres de sécurité.

Les instructions relatives à la création d’une fonction externe à l’aide de la console de gestion AWS comprennent un exemple de fonction Lambda et des détails sur la création d’une API Gateway de base :

  • Les utilisateurs novices peuvent utiliser les instructions avec peu ou pas de modifications.

  • Les utilisateurs expérimentés peuvent utiliser les instructions et l’exemple d’une fontion Lambda comme point de départ pour créer une fonction Lambda personnalisée et une API Gateway configurée de manière personnalisée.

Modèle AWS CloudFormation

Le modèle CloudFormation exécute les deux étapes suivantes de la création d’une fonction externe :

  • Création du service distant (une fonction AWS Lambda).

  • Création et configuration du service proxy (par exemple, Amazon API Gateway).

Le modèle aussi :

  • Crée deux rôles IAM (un pour la fonction Lambda et un pour API Gateway).

  • Configure une politique de ressources pour API Gateway.

Préparation de l’utilisation de la console de gestion AWS

Créer une feuille de calcul pour le suivi des informations requises

Lorsque vous créez votre fonction externe, vous devez enregistrer des informations spécifiques (par exemple, l’URL de l’appel de ressources) que vous saisissez afin de pouvoir utiliser ces informations dans les étapes suivantes. La feuille de calcul ci-dessous vous aide à suivre ces informations.

===========================================================================
================ Tracking Worksheet: AWS Management Console ===============
===========================================================================

****** Step 1: Information about the Lambda Function (remote service) *****

Your AWS Account ID: ______________________________________________________

Lambda Function Name: _____________________________________________________


******** Step 2: Information about the API Gateway (proxy Service) ********

New IAM Role Name: ________________________________________________________

New IAM Role ARN: _________________________________________________________

Snowflake VPC ID (optional): ______________________________________________

New API Name: _____________________________________________________________

API Gateway Resource Name: ________________________________________________

Resource Invocation URL: __________________________________________________

Method Request ARN: _______________________________________________________


*** Step 3: Information about the API Integration and External Function ***

API Integration Name: _____________________________________________________

API_AWS_IAM_USER_ARN: _____________________________________________________

API_AWS_EXTERNAL_ID: ______________________________________________________

External Function Name: ___________________________________________________
Copy

Préparation à l’utilisation du modèle AWS CloudFormation

Télécharger le modèle

Le modèle peut être téléchargé à partir du répertoire de modèles de déploiement du référentiel Snowflake dans GitHub.

Créer une feuille de calcul pour le suivi des informations requises

Lorsque vous créez votre fonction externe, vous devez enregistrer des informations spécifiques (par exemple, l’URL de l’appel de ressources) que vous saisissez afin de pouvoir utiliser ces informations dans les étapes suivantes. La feuille de calcul ci-dessous vous aide à suivre ces informations.

===========================================================================
================== Tracking Worksheet: CloudFormation Template ============
===========================================================================

New IAM Role Name: ________________________________________________________

New IAM Role ARN: _________________________________________________________

Resource Invocation URL: __________________________________________________

API_AWS_IAM_USER_ARN: _____________________________________________________

API_AWS_EXTERNAL_ID: ______________________________________________________
Copy

Ressources supplémentaires pour la mise en place de fonctions externes sur AWS

Lorsque vous serez prêt à créer votre propre service à distance pour votre propre fonction externe, vous voudrez peut-être consulter les exemples de services à distance basés sur les fonctions Lambda qui sont disponibles dans les Snowflake Labs.