Créer votre première fonction sur Azure Arc (préversion)

Dans ce guide de démarrage rapide, vous créez un projet Azure Functions et vous le déployez dans une application de fonction qui s’exécute sur un cluster Kubernetes avec Azure Arc. Pour plus d’informations, consultez App Service, Functions et Logic Apps sur Azure Arc. Ce scénario prend en charge uniquement les applications de fonction s’exécutant sur Linux.

Notes

La prise en charge de l’exécution de fonctions sur un cluster Kubernetes avec Azure Arc est actuellement disponible en préversion.

La publication de projets de fonction PowerShell sur des clusters Kubernetes avec Azure Arc n’est pas prise en charge actuellement. Si vous devez déployer des fonctions PowerShell sur des clusters Kubernetes avec Azure Arc, créez votre application de fonction dans un conteneur.

Si vous devez personnaliser le conteneur dans lequel votre application de fonction s’exécute, consultez Créer vos premières fonctions conteneurisées sur Azure Arc (préversion).

Prérequis

Sur votre ordinateur local :

Installer Azure Functions Core Tools

La méthode recommandée pour installer Core Tools dépend du système d’exploitation de votre ordinateur de développement local.

Les étapes suivantes utilisent un programme d’installation Windows (MSI) pour installer Core Tools v4.x. Pour plus d’informations sur les autres programmes d’installation basés sur des packages, consultez le fichier Lisezmoi des outils principaux.

Téléchargez et exécutez le programme d’installation de Core Tools, selon votre version de Windows :

Si vous avez précédemment utilisé Windows installer (MSI) pour installer Core Tools sur Windows, vous devez désinstaller l’ancienne version de la fonction Ajout/suppression de programmes avant d’installer la dernière version.

Créer un environnement App Service Kubernetes

Avant de commencer, vous devez créer un environnement App Service Kubernetes pour un cluster Kubernetes avec Azure Arc.

Notes

Lorsque vous créez l’environnement, veillez à noter le nom de l’emplacement personnalisé et le nom du groupe de ressources contenant l’emplacement personnalisé. Vous pourrez les utiliser pour trouver l’ID d’emplacement personnalisé dont vous aurez besoin lors de la création de votre application de fonction dans l’environnement.

Si vous n’avez pas créé l’environnement, contactez l’administrateur de votre cluster.

Ajouter des extensions Azure CLI

Lancez l’environnement Bash dans Azure Cloud Shell.

Comme ces commandes CLI ne font pas encore partie de l’ensemble principal de l’interface CLI, ajoutez-les avec les commandes suivantes :

az extension add --upgrade --yes --name customlocation
az extension remove --name appservice-kube
az extension add --upgrade --yes --name appservice-kube

Créer le projet de fonction local

Dans Azure Functions, un projet de fonction est l’unité de déploiement et d’exécution pour une ou plusieurs fonctions qui répondent chacune à un déclencheur spécifique. Toutes les fonctions d’un projet partagent les mêmes configurations locale et d’hébergement. Dans cette section, vous créez un projet de fonction qui contient une seule fonction.

  1. Exécutez la commande func init, de la façon suivante, pour créer un projet Functions dans un dossier nommé LocalFunctionProj avec le runtime spécifié :

    func init LocalFunctionProj --dotnet
    
  2. Accédez au dossier du projet :

    cd LocalFunctionProj
    

    Ce dossier contient divers fichiers pour le projet, notamment des fichiers config nommés local.settings.json et host.json. Par défaut, le fichier local.settings.json est exclu du contrôle de code source dans le fichier .gitignore. Cette exclusion est due au fait que le fichier peut contenir des secrets téléchargés à partir d’Azure.

  3. Ajoutez une fonction à votre projet à l’aide de la commande suivante, où l’argument --name est le nom unique de votre fonction (HttpExample) et où l’argument --template spécifie le déclencheur de la fonction (HTTP).

    func new --name HttpExample --template "HTTP trigger" --authlevel "anonymous"
    

Exécuter la fonction localement

  1. Exécutez votre fonction en démarrant l’hôte du runtime d’Azure Functions local à partir du dossier LocalFunctionProj :

    func start
    

    Vers la fin de la sortie, les lignes suivantes doivent s’afficher :

    Capture d’écran de la sortie de la fenêtre de terminal lors de l’exécution locale d’une fonction.

    Notes

    Si HttpExample n’apparaît pas comme indiqué ci-dessus, cela signifie probablement que vous avez démarré l’hôte à partir d’un emplacement autre que le dossier racine du projet. Dans ce cas, utilisez Ctrl+C pour arrêter l’hôte, accédez au dossier racine du projet, puis réexécutez la commande précédente.

  2. Copiez l’URL de votre fonction HTTP à partir de cette sortie dans un navigateur et ajoutez la chaîne de requête ?name=<YOUR_NAME> pour obtenir une URL complète semblable à http://localhost:7071/api/HttpExample?name=Functions. Le navigateur doit afficher un message de réponse qui renvoie la valeur de votre chaîne de requête. Le terminal dans lequel vous avez démarré votre projet affiche également une sortie de journal quand vous effectuez des requêtes.

  3. Quand vous avez terminé, appuyez sur Ctrl + C, puis tapez y pour arrêter l’hôte Functions.

Obtenir l’emplacement personnalisé

Pour pouvoir créer une application de fonction dans un emplacement personnalisé, vous devez obtenir des informations sur l’environnement.

Obtenez les informations suivantes sur l’emplacement personnalisé auprès de votre administrateur de cluster (voir Créer un emplacement personnalisé).

customLocationGroup="<resource-group-containing-custom-location>"
customLocationName="<name-of-custom-location>"

Obtenez l’ID d’emplacement personnalisé pour la prochaine étape.

customLocationId=$(az customlocation show \
    --resource-group $customLocationGroup \
    --name $customLocationName \
    --query id \
    --output tsv)

Créer des ressources Azure

Avant de pouvoir déployer votre code de fonction dans votre nouvel environnement App Service Kubernetes, vous devez créer deux ressources supplémentaires :

  • Un Compte de stockage. Bien que cet article crée un compte de stockage, dans certains cas, un compte de stockage peut ne pas être requis. Pour plus d’informations, consultez Clusters avec Azure Arc dans l’article sur les considérations relatives au stockage.
  • Une application de fonction, qui fournit le contexte d’exécution de votre code de fonction. L’application de fonction s’exécute dans l’environnement App Service Kubernetes et est mappée à votre projet de fonction local. Une application de fonction permet de regrouper des fonctions en une unité logique pour faciliter la gestion, le déploiement et le partage de ressources.

Notes

Les applications de fonction s’exécutent dans un environnement App Service Kubernetes dans le cadre d’un plan Dedicated (App Service). Si vous créez votre application de fonction sans plan existant, le plan approprié est créé automatiquement.

Créer un compte de stockage

Utilisez la commande az storage account create pour créer un compte de stockage universel dans votre groupe de ressources et votre région :

az storage account create --name <STORAGE_NAME> --location westeurope --resource-group myResourceGroup --sku Standard_LRS

Notes

Dans certains cas, un compte de stockage peut ne pas être requis. Pour plus d’informations, consultez Clusters avec Azure Arc dans l’article sur les considérations relatives au stockage.

Dans l’exemple précédent, remplacez <STORAGE_NAME> par un nom qui vous convient et qui est unique dans Stockage Azure. Les noms doivent contenir entre 3 et 24 caractères, et comporter uniquement des lettres minuscules. Standard_LRS spécifie un compte universel, qui est pris en charge par Functions. La valeur --location est une région Azure standard.

Créer l’application de fonction

Exécutez la commande az functionapp create pour créer une application de fonction dans l’environnement.

az functionapp create --resource-group MyResourceGroup --name <APP_NAME> --custom-location <CUSTOM_LOCATION_ID> --storage-account <STORAGE_NAME> --functions-version 4 --runtime dotnet 

Dans cet exemple, remplacez <CUSTOM_LOCATION_ID> par l’ID de l’emplacement personnalisé que vous avez déterminé pour l’environnement App Service Kubernetes. De plus, remplacez <STORAGE_NAME> par le nom du compte que vous avez utilisé à l’étape précédente, puis remplacez <APP_NAME> par le nom global unique approprié dans votre cas.

Déployer le projet de fonction sur Azure

Après avoir créé votre application de fonction dans Azure, vous êtes prêt à déployer votre projet de fonctions locales en utilisant la commande func azure functionapp publish.

Dans votre dossier de projet racine, exécutez cette commande func azure functionapp publish :

func azure functionapp publish <APP_NAME>

Dans cet exemple, remplacez <APP_NAME> par le nom de votre application. Un déploiement réussi donne des résultats similaires à la sortie suivante (tronquée pour des raisons de simplicité) :

...

Getting site publishing info...
Creating archive for current directory...
Performing remote build for functions project.

...

Deployment successful.
Remote build succeeded!
Syncing triggers...
Functions in msdocs-azurefunctions-qs:
    HttpExample - [httpTrigger]
        Invoke url: https://msdocs-azurefunctions-qs.azurewebsites.net/api/httpexample

Dans la mesure où l’exécution d’un déploiement complet sur un cluster Kubernetes avec Azure Arc peut prendre du temps, vous pouvez réexécuter la commande suivante pour vérifier vos fonctions publiées :

func azure functionapp list-functions

Appeler la fonction sur Azure

Dans la mesure où votre fonction utilise un déclencheur HTTP, vous l’appelez en adressant une requête HTTP à son URL dans le navigateur ou à l’aide d’un outil semblable à curl.

Copiez l’URL d’appel complète affichée au sein de la sortie de la commande de publication dans la barre d’adresse d’un navigateur, en ajoutant le paramètre de requête ?name=Functions. Le navigateur doit afficher une sortie similaire à celle générée au moment de l’exécution locale de la fonction.

Sortie de la fonction exécutée sur Azure dans un navigateur

Étapes suivantes

Maintenant que votre application de fonction s’exécute dans un conteneur dans un environnement App Service Kubernetes avec Azure Arc, vous pouvez la connecter au Stockage Azure en ajoutant une liaison de sortie Stockage File d’attente.