Etape 1 : Créer le service distant (Azure Function) dans le portail¶
Cette rubrique fournit des instructions détaillées pour créer une fonction Azure Function à utiliser comme service distant pour votre fonction externe.
Dans ce chapitre :
Étape précédente¶
Créer l’application Azure Functions¶
Il existe plusieurs façons de créer un service distant. Cette section montre comment créer un service distant implémenté en tant que fonction JavaScript.
Cette fonction externe est synchrone. Pour des informations sur la création d’une fonction externe asynchrone, voir Création d’une fonction asynchrone sur Azure.
Créez une application Azure Functions qui servira de conteneur pour la ou les fonctions que vous créerez plus tard :
Si vous ne l’avez pas encore fait, connectez-vous au portail Azure.
Créez l’application Azure Functions en suivant les instructions de la documentation Microsoft : Application Azure Functions.
Lorsque vous suivez ces instructions, n’oubliez pas ce qui suit :
Lorsque vous saisissez un nom dans le champ Function App Name , enregistrez également ce nom dans le champ
Azure Function app name
de votre feuille de calcul de suivi.Quand on vous demande de choisir comment faire Publish, choisissez Code.
Certaines restrictions s’appliquent lors de la création de plusieurs applications dans un même groupe de ressources. Pour plus de détails, consultez la documentation Microsoft : Service de l’application Azure.
Snowflake fournit un exemple de fonction « echo » dans Node.js. Pour utiliser cette fonction d’exemple pour commencer :
Lorsqu’on vous demande le
Runtime stack
, sélectionnez Node.js.Lorsqu’on vous demande la version de Node.js, sélectionnez la version 12.
Lorsqu’il vous est demandé sur quel OS exécuter la fonction, choisissez « Windows » ou « Linux ».
Si vous ne créez qu’une fonction de démonstration, Snowflake recommande de sélectionner « Windows ».
Les applications de fonction Linux ne peuvent pas être éditées dans le portail Azure. Les utilisateurs doivent publier le code via l’interface Visual Studio Code.
Si vous souhaitez exécuter votre fonction Azure sur Linux plutôt que sur Microsoft Windows, consultez la documentation Microsoft : Azure Functions.
L’authentification Azure AD n’est pas disponible sur Linux lorsque vous utilisez le plan tarifaire « Consommation » pour Azure Functions. Vous devez utiliser un plan tarifaire « App Service » ou un plan « Premium » afin de vous authentifier avec Azure AD.
Pour plus de détails, voir la documentation Microsoft : Azure AD.
Créer une fonction Azure déclenchée par HTTP¶
Après avoir créé votre application Azure Functions (conteneur), vous devez créer une fonction Azure dans ce conteneur. Cette fonction fait office de service distant.
Microsoft permet d’appeler (« déclencher ») des fonctions Azure de différentes manières. Une fonction externe Snowflake appelle un service distant via une commande HTTP POST, donc la fonction Azure que vous créez doit être une « fonction déclenchée par HTTP ».
Astuce
Vous pouvez utiliser les instructions fournies par Microsoft pour créer la fonction déclenchée par HTTP :
Cependant, Snowflake fournit des instructions personnalisées qui incluent des détails supplémentaires et des exemples de code, et suggère un niveau d’autorisation différent de celui de Microsoft. Nous suggérons d’utiliser les instructions personnalisées à la place des instructions de Microsoft.
Créer la fonction¶
Pour effectuer les tâches décrites dans cette section, vous devez vous trouver dans l’écran Function App du portail Azure. Le nom de votre application Azure Functions doit être affiché, généralement dans le coin supérieur gauche de l’écran.
Pour créer la fonction déclenchée par HTTP :
Dans l’arborescence du menu de gauche, cherchez la section intitulée Functions. Dans cette section, cliquez sur l’élément étiqueté Functions pour ajouter une fonction.
Cliquez sur le bouton + Add.
Sélectionnez HTTP trigger dans la liste des déclencheurs potentiels sur la droite.
Entrez le nom à utiliser pour votre fonction déclenchée par HTTP.
Enregistrez ce nom dans le champ
HTTP-Triggered Function name
de votre feuille de calcul de suivi.Entrez le Authorization level.
Snowflake recommande de choisir Function comme niveau d’autorisation.
Pour plus d’informations sur les niveaux d’autorisation possibles, voir la documentation Microsoft : fonctions déclenchées par HTTP.
Cliquez sur le bouton intitulé Add.
Vous accédez alors à un écran qui affiche le nom de la fonction et, en dessous, le mot Function.
Dans l’arborescence du menu de gauche, cliquez sur Code + Test.
Remplacez le code par défaut par votre propre code.
Un exemple de code pour une fonction JavaScript « echo » est fourni ci-dessous.
La fonction lit chaque ligne, puis copie cette ligne dans la sortie (résultats). Le numéro de ligne est également inclus dans la sortie. La sortie est renvoyée dans le cadre d’un dictionnaire à plusieurs niveaux.
Cette fonction accepte et renvoie les données au même format (JSON) que celui envoyé et lu par Snowflake. Pour plus d’informations sur les formats de données, voir Formats des données d’entrée et de sortie des services à distance .
Normalement, la fonction renvoie le code HTTP 200. Si aucune ligne n’est transmise à la fonction (c’est-à-dire si le corps de la requête est vide), la fonction renvoie le code d’erreur 400.
module.exports = async function(context, request) { context.log('JavaScript HTTP trigger function processed a request.'); if (request.body) { var rows = request.body.data; var results = []; rows.forEach(row => { results.push([row[0], row]); }); results = {data: results} context.res = { status: 200, body: JSON.stringify(results) }; } else { context.res = { status: 400, body: "Please pass data in the request body." }; } };
Cliquez sur le bouton Save au-dessus du code.
Tester la fonction¶
Pour tester la fonction Azure Function déclenchée par HTTP que vous venez de créer, collez l’échantillon de données suivant dans le champ Body et cliquez sur le bouton Test/Run :
{ "data": [ [ 0, 43, "page" ], [ 1, 42, "life, the universe, and everything" ] ] }
Le contenu de la sortie doit être similaire à ce qui suit :
{ "data": [ [ 0, [ 0, 43, "page" ] ], [ 1, [ 1, 42, "life, the universe, and everything" ] ] ] }
Notez que le formatage peut être différent de ce qui est indiqué ci-dessus.
Étape suivante¶
Étape 2 : Créer le service proxy (service de gestion des API Azure) dans le portail