Étape 1 : Créez le service distant (fonctionAWS Lambda) dans la console de gestion¶
Cette rubrique fournit des instructions détaillées pour créer une fonctionAWS Lambda à utiliser comme service distant pour votre fonction externe.
Cette rubrique comprend le code d’un exemple de fonction Lambda que vous pouvez utiliser tel quel pour créer votre première fonction externe, ou que vous pouvez utiliser comme point de départ pour une fonction Lambda personnalisée.
Dans ce chapitre :
Étape précédente¶
Introduction¶
Il existe plusieurs façons de créer un service distant sur AWS. Cette rubrique montre une façon de procéder, qui consiste à créer une fonction Lambda à utiliser comme service distant.
Ce tutoriel fournit deux exemples de fonctions Lambda, chacune étant écrite en Python.
Plus de détails sont fournis dans Exemples de fonctions Snowflake (dans cette rubrique).
Comprendre les entrées et sorties de la fonction Lambda¶
Pour que Snowflake puisse envoyer et recevoir des données depuis votre service distant, ce dernier doit accepter et renvoyer des données au format JSON.
Des informations indépendantes de la plate-forme concernant l’entrée et la sortie du service à distance se trouvent dans Formats des données d’entrée et de sortie des services à distance .
Cette section fournit des détails qui sont spécifiques aux fonctions AWS Lambda.
Entrée et sortie indépendantes du langage via JSON¶
Les informations de cette section s’appliquent à toutes les fonctions Lambda utilisées comme services distants pour les fonctions externes de Snowflake. Pour des informations spécifiques à la plate-forme concernant l’entrée et la sortie des fonctions externes, voir la ou les sous-sections ci-dessous.
Sur AWS, la convention pour un service compatible HTTP est de renvoyer le corps à l’intérieur d’un objet JSON qui inclut également le code de statut HTTP. Le JSON pour une valeur de retour typique d’une fonction AWS Lambda ressemble à ceci :
{ "statusCode": <http_status_code>, "body": { "data": [ [ 0, <value> ], [ 1, <value> ] ... ] } }
La structure de l’entrée JSON est similaire à la précédente, mais inclut des paires clé-valeur supplémentaires dont vous n’aurez probablement pas besoin, et exclut les statusCode
.
Entrée de la fonction Lambda spécifique à Python¶
Les informations suivantes s’appliquent aux fonctions Lambda en langage Python compatibles avec Snowflake, et incluent des exemples de fonctions Lambda dans ce tutoriel. Ces informations s’ajoutent aux règles d’entrée et de sortie indépendantes du langage.
Une fonction Lambda en langage Python compatible avec Snowflake reçoit deux paramètres, event
et context
. Les fonctions externes simples ne nécessitent généralement que le paramètre event
.
Le paramètre event
comprend de nombreux sous-champs, dont l’un est body
. Le corps est une chaîne compatible JSON qui contient un dictionnaire.
Le dictionnaire comprend une clé nommée data
; la valeur correspondante pour data
est un tableau. Ce tableau contient les lignes transmises par Snowflake.
Chaque ligne est représentée par un tableau qui est imbriqué dans le tableau data
.
(Etant donné que AWS Lambda traite commodément la requête HTTP POST envoyée par Snowflake, extrait le corps et transmet le corps à l’intérieur du paramètre d’événement, ces exemples de fonctions n’ont pas besoin d’analyser l’intégralité de la requête HTTP POST.)
Le Exemple de fonction Lambda synchrone comprend du code montrant comment lire le paramètre event
.
Choisir le code de la fonction Lambda¶
Exemples de fonctions Snowflake¶
Snowflake fournit deux exemples de fonctions :
L’exemple le plus court est synchrone. Si vous êtes novice en matière de fonctions externes ou de fonctions Lambda, Snowflake vous recommande d’utiliser ceci pour créer votre premier exemple de fonction externe.
Les utilisateurs expérimentés peuvent également copier ce code et le modifier pour l’utiliser comme point de départ de services à distance personnalisés.
Le code est disponible dans cet exemple de fonction Lambda synchrone.
L’autre exemple est asynchrone.
Cet exemple est principalement destiné à servir d’exemple pour créer des services distants asynchrones personnalisés.
Le code est disponible dans cet exemple de fonction Lambda asynchrone.
Fonction Lambda personnalisée¶
Vous pouvez écrire votre propre fonction Lambda à partir de zéro, ou vous pouvez utiliser l’une des fonctions décrites dans Exemples de fonctions Snowflake (dans cette rubrique) comme point de départ.
Si vous souhaitez utiliser un service distant existant, vous pouvez ignorer la plupart des instructions de cette étape du tutoriel. Au lieu de cela, faites ce qui suit :
Enregistrez votre ID de compte AWS dans le champ
Your AWS Account ID
de la feuille de calcul de suivi.Enregistrez le nom de la fonction Lambda du service distant dans le champ
Lambda Function Name
de la feuille de calcul de suivi.Allez à Etape 2 : Créez le service proxy (Amazon API Gateway) dans la console de gestion AWS.
Créer une fonction Lambda¶
Pour créer une fonction AWS Lambda, suivez ces étapes.
Note
Bien que ces étapes vous montrent comment créer les exemples de services distants fournis par Snowflake, vous pouvez les utiliser comme modèles pour créer votre propre service distant personnalisé. Si vous créez une fonction Lambda personnalisée, modifiez les étapes ci-dessous en conséquence (par exemple, choisissez le langage de programmation approprié pour le code de votre service distant).
Connectez-vous à la console de gestion AWS, si ce n’est pas déjà fait.
Si vous n’avez pas déjà enregistré votre ID de compte AWS dans le champ de la feuille de calcul intitulé
Your AWS Account ID
, enregistrez-le maintenant.Si vous devez consulter votre ID de compte AWS, suivez les instructions d’AWS.
Sélectionnez Lambda.
Sélectionnez Create function.
Saisissez un nom de fonction.
Enregistrez ce nom dans le champ
Lambda Function Name
de la feuille de calcul.Sélectionnez le langage de programmation à utiliser. Si vous utilisez l’un des exemples de fonctions Python fournis par Snowflake, choisissez Python 3.8.
Choisissez ou créez un rôle d’exécution pour cette fonction.
Sélectionnez la ou les options appropriées, généralement Create a new role with basic Lambda permissions.
(Ce rôle est distinct de votre rôle de compte Cloud et distinct de vos rôles Snowflake.)
Cliquez sur le bouton Create Function.
Dans l’onglet lambda_function , entrez le code de la fonction.
Si vous n’avez pas encore écrit votre propre fonction, vous pouvez utiliser l’exemple suivant fourni par Snowflake :
Astuce
Si vous ne pouvez pas coller dans la fenêtre d’édition, essayez de double-cliquer sur le nom du fichier de la fonction pour activer l’édition.
Cliquez sur le bouton Deploy pour déployer la fonction.
Tester la fonction Lambda¶
Cliquez sur la flèche vers le bas à côté du bouton Test et sélectionnez Configure test event. Dans le champ Event name tapez test.
Pour l’exemple de fonction Python synchrone fournie par Snowflake, utilisez les données de test suivantes (remplacez toutes les données par défaut par les données ci-dessous) :
{ "body": "{ \"data\": [ [ 0, 43, \"page\" ], [ 1, 42, \"life, the universe, and everything\" ] ] }" }
Cliquez sur Create, puis sur Test.
Les résultats d’exécution doivent être similaires à ceci :
{ "statusCode": 200, "body": "{\"data\": [[0, [\"Echoing inputs:\", 43, \"page\"]], [1, [\"Echoing inputs:\", 42, \"life, the universe, and everything\"]]]}" }
Vous disposez maintenant d’une fonction AWS Lambda que vous pouvez utiliser comme service distant pour votre fonction externe.
Étape suivante¶
Etape 2 : Créez le service proxy (Amazon API Gateway) dans la console de gestion AWS