Création d’un exemple de fonction externe à l’aide d’un modèle de gestionnaire des ressources Azure

Ce document montre comment créer un exemple de fonction externe sur Microsoft Azure en utilisant un modèle Azure Resource Manager (ARM).

Snowflake fournit un modèle avec lequel vous pouvez commencer. Ce modèle masque certains détails du processus de création et code en dur certains noms (par exemple le nom du déclencheur) et fonctionnalités. Lorsque vous êtes prêt à créer votre propre fonction externe personnalisée, vous pouvez soit personnaliser une copie du modèle, soit suivre les instructions plus souples disponibles sur Création d’une fonction externe personnalisable sur Azure .

Note

Ces instructions supposent que vous connaissez déjà l’administration de Microsoft Azure. Ces instructions décrivent les étapes générales que vous devez exécuter, mais ne décrivent pas en détail l’interface utilisateur du portail Azure, car l’interface pourrait changer.

Dans ce chapitre :

Voir aussi :

Introduction

Deux des étapes clés de la création d’une fonction externe sont les suivantes :

  • Créer le service à distance (par exemple, la fonction Azure).

  • Créer et configurer le service proxy (par ex. le service Gestion des API Azure).

Le modèle de gestionnaire de ressources Azure exécute les deux étapes précédentes.

Le modèle aussi :

  • Crée un compte de stockage nécessaire au service de la fonction Azure.

  • Ajoute une politique validate-JWT à l’instance de gestion des API afin d’accroître la sécurité du service de gestion des API Azure. Cependant, vous devez mettre à jour manuellement la politique JWT avant de l’utiliser.

Pour télécharger le modèle depuis Snowflake, pointez votre navigateur vers :

Feuille de calcul

Lorsque vous créez votre fonction externe, vous devez enregistrer des informations spécifiques (par exemple, le nom du service des gestion des API) que vous saisissez afin de pouvoir utiliser ces informations dans les étapes suivantes. La feuille de calcul ci-dessous vous aide à suivre ces informations.

Pour les informations codées en dur dans le modèle de gestion des ressources Azure fourni par Snowflake, les valeurs ont déjà été remplies ci-dessous.

==============================================================================================
=========================================== Worksheet ========================================
==============================================================================================

Azure Tenant ID........................: _______________________________________

    This is a UUID.

    If you do not already know your Azure AD tenant ID, you can find it by doing the following:

    #. Log into the Azure portal (http://portal.azure.com).
    #. In the "Azure services" icons near the top of the page, click on Azure Active Directory.
    #. In the menu on the left-hand side, look for the section titled :extui:`Manage`,
       then click on :extui:`Properties` under that.

       The Azure AD tenant ID is displayed in the Tenant ID field.

    .. # The Azure AD Tenant ID is used in the azure_tenant_id clause in CREATE API INTEGRATION.


----------------- Information about the Azure Function (remote service) ----------------------

HTTP-Triggered Function name...........: __________________ echo ________________

Azure function AD Application ID.......: ________________________________________

    (This is the "Application (client) ID" of the Azure AD app registration for the Azure function,
    and is used to fill in the "azure_ad_application_id" field in the "CREATE API INTEGRATION" command.
    This is in the form of a UUID.)


------------ Information about the Azure API Management Service (proxy service) --------------

API Management service name......: __________________________________________

API Management URL...............: __________________________________________

Azure Function HTTP Trigger URL..: __________________________________________

API Management API URL suffix....: __________________________________________


---------------- Snowflake API Integration and External Function Information -----------------

API Integration Name.......: _______________________________________________

AZURE_MULTI_TENANT_APP_NAME: _______________________________________________

AZURE_CONSENT_URL..........: _______________________________________________

External Function Name.....: _______________________________________________

Étape 1 : Créer une application Azure AD pour l’application de la fonction Azure

  1. Connectez-vous au portail Azure.

  2. Recherchez la page App registrations .

  3. Cliquez sur New registration, ce qui vous amène à l’écran Register an application .

  4. Entrez un nom unique pour votre application Azure AD .

  5. Enregistrez le nom de l’application Azure AD dans le champ de la feuille de calcul intitulé « Nom d’enregistrement de l’application AD de la fonction Azure ».

  6. Sous Supported account types, choisissez Accounts in this organizational directory only (Default Directory only - Single tenant).

  7. Cliquez sur Register.

    Cela vous amène à l’écran Home > App registrations et vous montre la nouvelle application Azure AD.

  8. Enregistrez l’ID de Application (client) AD de l’application Azure AD que vous venez de créer dans le champ « ID de l’application AD de la fonction Azure » de la feuille de calcul ci-dessus. Cet ID devrait prendre la forme d’un UUID.

Étape 2 : Créer la fonction Azure et le service de gestion des API en utilisant le modèle

  1. Accédez au portail Azure.

  2. Dans la barre de recherche Azure, cherchez Template.

  3. Sous Services, cliquez sur Deploy a custom template.

  4. Sélectionnez Build your own template in the editor.

  5. Sélectionnez Load file.

  6. Naviguez jusqu’au répertoire qui contient votre copie du modèle, puis sélectionnez ce modèle.

  7. Cliquez sur Save.

    Cela vous amène à l’écran Custom deployment .

  8. Sélectionnez un Resource group existant (ou créez un nouveau).

    Astuce

    Si vous créez un nouveau groupe de ressources uniquement pour cette démonstration, vous voudrez peut-être en enregistrer le nom afin de pouvoir le supprimer plus tard lorsque vous aurez terminé.

  9. Sélectionnez le Region approprié.

  10. Entrez un API Management Service Name.

  11. Enregistrez le nom du service de Gestion des API dans le champ « Nom du service Gestion des API » dans la feuille de calcul ci-dessus.

  12. Dans le champ Function App Name, entrez un nom unique.

  13. Enregistrez le nom de l’application de fonction dans le champ « Nom de l’application de fonction Azure » de la feuille de calcul.

  14. Dans le champ Publisher email, entrez votre adresse électronique. (Microsoft vous envoie un courriel pour vous informer de la création du service de gestion des API).

  15. Dans le champ Azuread Application Id , entrez l” ID de l’application AD Azure que vous avez créée précédemment. C’est « l’ID de l’application AD de la fonction Azure » que vous avez enregistré dans la feuille de calcul.

  16. Cliquez sur Review + create.

  17. Cliquez sur Create.

La création de l’application de la fonction Azure et du service de gestion des API prend généralement environ une demi-heure.

Étape 3 : Créer l’intégration API et la fonction externe

Maintenant que vous avez créé le service à distance et le service proxy, vous devez créer l’intégration API et la fonction externe, puis revenir à cette page. Afin de créer l’intégration API et la fonction externe, vous avez besoin de l’URL du service de gestion des API que vous pouvez obtenir en suivant les étapes ci-dessous.

À ce stade, le portail Azure devrait afficher le message « Votre déploiement est terminé » et devrait afficher Deployment name.

  1. Cliquez sur « Sorties » dans la colonne de gauche.

  2. Copiez api Management URL dans le champ « URL de Gestion des API » dans la feuille de calcul.

  3. Copiez azure Function Http Trigger URL dans le champ « URL de déclencheur Http de la fonction Azure » de la feuille de calcul.

Lorsque vous créez l’intégration API et la fonction externe, on vous demande l’URL de api_allowed_prefixes. Vous pouvez utiliser l”« URL de gestion des API » comme préfixe (avec ou sans le suffixe URL API de gestion des API mentionné ailleurs dans les instructions).

Lorsque vous créez la fonction externe, on vous demande l’URL d’appel. Vous pouvez utiliser l’URL de déclencheur HTTP de la fonction Azure comme URL d’appel.

En utilisant les informations ci-dessus, exécutez les étapes des liens ci-dessous :

Retournez ensuite à cette page.

Étape 4 : Mettre à jour la politique de sécurité sur le service Gestion des API Azure (service proxy)

Le modèle Azure Resource Manager fourni par Snowflake crée une politique de sécurité pour valider un JWT (jeton Web JSON) qui autorise Snowflake à appeler votre fonction Azure.

Cependant, il manque un champ à la politique de sécurité, que vous devez remplir. Depuis le portail Azure, exécutez les étapes suivantes :

  1. Sélectionnez « Services de gestion des API ».

  2. Trouvez l’instance du service de gestion des API que vous avez créée. Le nom de cette instance est enregistré dans le champ « Nom du service de gestion des API » de la feuille de calcul.

  3. Cliquez sur le nom de l’instance du service de gestion des API.

  4. Sélectionnez APIs -> APIs.

  5. Sous Toutes les APIs, sélectionnez « ext-func-api ».

  6. Sélectionnez POST echo.

  7. Cliquez sur le bouton validate-JWT, qui se trouve dans la case Inbound processing .

    Si vous ne pouvez pas voir ce bouton, veuillez faire défiler la page vers le bas.

  8. Cherchez « SNOWFLAKE_SERVICE_PRINCIPAL_ID », et remplacez-le par l’ID de l’application AD Azure Snowflake (également appelé « ID de l’application Snowflake »).

    Si vous n’avez pas encore l’ID de l’application Snowflake, vous pouvez l’obtenir en suivant les étapes suivantes :

    1. Dans la feuille de calcul, trouvez le AZURE_MULTI_TENANT_APP_NAME que vous avez rempli précédemment.

    2. Dans la zone de recherche du portail Azure, cherchez Enterprise Applications.

      Cela vous amène à l’écran Enterprise applications | All applications .

    3. Dans cet écran, recherchez le AZURE_MULTI_TENANT_APP_NAME.

      La boîte de recherche n’est pas clairement nommée ; cherchez un grand champ qui n’a PAS de nom.

      Si vous ne trouvez pas de correspondance exacte pour le AZURE_MULTI_TENANT_APP_NAME, effectuez une nouvelle recherche en utilisant uniquement les premiers caractères de ce nom (si le nom contient un trait de soulignement, n’incluez pas le trait de soulignement ni aucun caractère après le trait de soulignement).

  9. Cliquez sur Save.

Étape 5 : Appeler la fonction

Testez la fonction en suivant ces instructions.

Dépannage

La demande a échoué pour la fonction externe <nom_fonction_externe> avec une erreur de service à distance : 500

Cause possible :

Vous avez peut-être choisi la mauvaise option pour votre application AD Azure. Plus précisément, vous avez peut-être choisi Accounts in any organizational directory (Any Azure AD directory - Multitenant) and personal Microsoft accounts (e.g. Skype, Xbox) plutôt que la bonne option Accounts in this organizational directory only (Default Directory only - Single tenant).

La demande a échoué pour la fonction externe <nom_fonction> avec une erreur de service à distance : 401 “{ « statusCode »: 401, « message »: « Invalid JWT. » }”

Si vous utilisez le modèle Azure Resource Manager, vous n’avez peut-être pas mis à jour le JWT que le modèle a créé pour vous. La section Étape 4 : Mettre à jour la politique de sécurité sur le service Gestion des API Azure (service proxy) contient des instructions.