Partager via


Didacticiel : Fonction Python avec Stockage Table Azure en tant que sortie

Dans ce tutoriel, vous allez apprendre à configurer une fonction Python avec Stockage Table en sortie en effectuant les tâches suivantes.

  • Utilisez Visual Studio Code pour créer un projet de fonction Python.
  • Ajoutez une liaison de fonction de sortie Stockage Table.
  • Utilisez Visual Studio Code pour exécuter la fonction localement.
  • Utilisez Azure CLI pour créer une connexion entre la fonction Azure et Stockage Table avec le connecteur de services.
  • Utilisez Visual Studio pour déployer votre fonction.

Vue d’ensemble des composants du projet de fonction dans ce tutoriel :

Composant du projet Sélection / Solution
Service source Fonction Azure
Service cible Azure Storage Table
Liaison de fonction Déclencheur HTTP, Stockage table en tant que sortie
Type d’authentification de projet local Chaîne de connexion
Type d’authentification de la fonction cloud Chaîne de connexion

Avertissement

Microsoft vous recommande d’utiliser le flux d’authentification le plus sécurisé disponible. Le flux d'authentification décrit dans cette procédure demande un degré de confiance très élevé dans l'application et comporte des risques qui ne sont pas présents dans d'autres flux. Vous ne devez utiliser ce flux que si d’autres flux plus sécurisés, tels que les identités managées, ne sont pas viables.

Prérequis

Créez un projet de fonction Python

Suivez le tutoriel pour créer un projet Azure Functions local et fournissez les informations suivantes aux demandes :

Prompt Sélection
Sélectionner une langue Choisissez Python. (modèle de langage de programmation v1)
Sélectionner un interpréteur Python pour créer un environnement virtuel Choisissez votre interpréteur Python préféré. Si une option n’est pas affichée, tapez le chemin complet de votre fichier binaire Python.
Sélectionner un modèle pour la première fonction de votre projet Choisissez HTTP trigger.
Fournir un nom de fonction Entrez TableStorageOutputFunc.
Niveau d’autorisation Choisissez Anonymous, qui permet à quiconque d’appeler le point de terminaison de votre fonction. 

Vous avez créé un projet de fonction Python avec un déclencheur HTTP.

Ajoutez une liaison de sortie d’une Stockage Table

Les attributs de liaison sont définis dans le fichier function.json pour une fonction donnée. Pour créer une liaison, cliquez avec le bouton droit (Ctrl+Clic sur macOS) sur le fichier function.json dans le dossier de votre fonction, puis choisissez Ajouter une liaison.... Suivez les invites pour définir les propriétés de liaison suivantes pour la nouvelle liaison :

Prompt Valeur Description
Sélectionner le sens de la liaison out La liaison est une liaison de sortie.
Sélectionner une liaison avec un sens... Azure Table Storage La liaison est une liaison de table de stockage Azure.
Nom utilisé pour identifier cette liaison dans votre code outMessage Nom qui identifie le paramètre de liaison référencé dans votre code.
Nom de la table dans le compte de stockage, où les données seront écrites testTable Le nom de la table que votre fonction écrit en sortie. Créez une table nommée testTable dans votre compte de stockage s’il n’existe pas.
Sélectionnez le paramètre dans « local.setting.json » Create new local app settings Sélectionnez le compte de stockage que votre fonction écrit en sortie. Visual Studio Code récupère sa chaîne de connexion pour la connexion de projet local.

Pour vérifier que la liaison a été ajoutée avec succès :

  1. Ouvrez le fichier TableStorageOutputFunc/function.json, vérifiez qu’une nouvelle liaison avec type: table et direction: out a été ajoutée dans ce fichier.
  2. Ouvrez le fichier local.settings.json, vérifiez qu’une nouvelle paire clé-valeur <your-storage-account-name>_STORAGE: <your-storage-account-connection-string> qui contient votre chaîne de connexion de compte de stockage a été ajoutée dans ce fichier.

Une fois la liaison ajoutée, mettez à jour vos codes de fonction pour consommer la liaison en remplaçant TableStorageOutputFunc/__init__.py par le fichier Python ici.

import logging
import uuid
import json
import azure.functions as func

def main(req: func.HttpRequest, outMessage: func.Out[str]) -> func.HttpResponse:

    rowKey = str(uuid.uuid4())
    data = {
        "Name": "Output binding message",
        "PartitionKey": "message",
        "RowKey": rowKey
    }

    outMessage.set(json.dumps(data))
    return func.HttpResponse(f"Message created with the rowKey: {rowKey}")

Exécuter la fonction localement

Suivez le didacticiel pour exécuter la fonction localement et vérifier la sortie de la table.

  1. Sélectionnez le compte de stockage que vous avez choisi lors de la création de la ressource de fonction Azure si vous êtes invité à vous connecter à un compte de stockage. Cette valeur est utilisée pour le runtime Azure Function. Ce n’est pas nécessairement le même compte de stockage que celui que vous utilisez pour la sortie.
  2. Pour lancer la fonction localement, appuyez sur <kbd>F5</kbd> ou sélectionnez l’icône Exécuter et déboguer dans la barre d’activité de gauche.
  3. Pour vérifier que la fonction peut écrire dans votre table, cliquez avec le bouton droit sur Execute Function Now... sur la fonction dans la vue WORKSPACE de Visual Studio Code et vérifiez la réponse de la fonction. Le message de réponse doit contenir le rowKey qui a été écrit dans la table.

Créez une connexion à l’aide du Connecteur de services

Lors de la dernière étape, vous avez vérifié le projet de fonction localement. Vous allez maintenant apprendre à configurer la connexion entre Azure Function et le Stockage Table Azure dans le cloud, afin que votre fonction puisse écrire dans votre blob de stockage après avoir été déployée dans le cloud.

  1. Ouvrez le fichier function.json dans votre projet local, modifiez la valeur de la propriété connection dans bindings pour qu’elle soit AZURE_STORAGETABLE_CONNECTIONSTRING.
  2. Exécutez la commande Azure CLI suivante pour créer une connexion entre votre fonction Azure et votre stockage Azure.
az functionapp connection create storage-table --source-id "<your-function-resource-id>" --target-id "<your-storage-table-resource-id>" --secret
  • --source-id format : /subscriptions/{subscription}/resourceG roups/{source_resource_group}/providers/Microsoft.Web/sites/{site}
  • --target-id format : /subscriptions/{subscription}/resourceGroups/{target_resource_group}/providers/Microsoft.Storage/storageAccounts/{account}/tableServices/default

Vous avez créé une ressource de connecteur de services qui configure une variable AZURE_STORAGETABLE_CONNECTIONSTRING dans les paramètres d’application de fonction. Ce paramètre d’application sera ensuite consommé par la liaison de fonction pour se connecter au stockage, afin que la fonction puisse écrire dans la table de stockage. Vous pouvez en savoir plus sur comment le connecteur de services aide Azure Functions à se connecter aux services.

Déployez votre fonction sur Azure

Vous pouvez maintenant déployer votre fonction sur Azure et vérifier que la liaison de sortie de table de stockage fonctionne.

  1. Suivez ce didacticiel Azure Functions pour déployer votre fonction sur Azure.
  2. Pour vérifier que la fonction peut écrire dans la table, cliquez avec le bouton droit sur Execute Function Now... sur la fonction dans la vue RESOURCES de Visual Studio Code et vérifiez la réponse de la fonction. Le message de réponse doit contenir la rowKey la fonction vient d’écrire dans votre table.

Résoudre les problèmes

S’il y a des erreurs liées à l’hôte de stockage, telles que No such host is known (<acount-name>.table.core.windows.net:443), vous devez vérifier si la chaîne de connexion que vous utilisez pour vous connecter à Azure Storage contient le point de terminaison de la table ou non. Si ce n’est pas le cas, accédez au portail Stockage Azure, copiez la chaîne de connexion à partir du panneau Access keys et remplacez les valeurs.

Si cette erreur se produit lorsque vous démarrez le projet localement, vérifiez le fichier local.settings.json.

Si cela se produit lorsque vous déployez votre fonction dans le cloud (dans ce cas, le déploiement de la fonction échoue généralement sur Syncing triggers ), vérifiez les paramètres de l’application de votre fonction.

Nettoyer les ressources

Si vous ne souhaitez pas continuer à utiliser ce projet, supprimez la ressource d’application de fonction que vous avez créée précédemment.

  1. Dans le portail Azure, ouvrez la ressource Application de fonction et sélectionnez Supprimer.
  2. Entrez le nom de l’application et sélectionnez Supprimer pour confirmer.

Étapes suivantes

Lisez les articles ci-dessous pour en savoir plus sur les concepts du connecteur de services et comment il aide Azure Functions à se connecter à d’autres services cloud.