Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Dans ce tutoriel, vous allez configurer une fonction Python pour utiliser Azure Table Storage comme liaison de sortie. Vous déployez ensuite la fonction sur Azure Functions et utilisez Service Connector pour connecter l'application Azure Functions à Stockage Table.
Vous utilisez Visual Studio Code pour effectuer les tâches suivantes :
- Créez un projet de fonction Python.
- Ajoutez une liaison de sortie pour une fonction Table de Stockage.
- Exécutez la fonction localement.
- Déployez la fonction sur Azure.
- Créez une connexion entre l’application Azure Functions et le stockage table à l’aide de Service Connector.
Le service source du connecteur de service est Azure Functions et le service cible est Azure Table Storage. La liaison de fonction utilise un déclencheur HTTP avec la table de stockage comme sortie. Le type d’authentification local et cloud est chaîne de connexion.
Prérequis
- Compréhension de base de Azure Functions et comment se connecter aux services dans Azure Functions.
- Un abonnement Azure dans lequel vous disposez d’autorisations d’écriture de ressources Azure, dans une région Azure qui supports Service Connector. Créer un compte de Azure gratuitement.
- Un compte stockage Azure dans votre abonnement Azure et une table nommée
testTabledans le compte de stockage. -
Visual Studio Code, avec les extensions suivantes installées :
- Python
- Outils Azure CLI
-
Azure Functions configuré pour autoriser le modèle de programmation V1 comme suit :
- Dans Visual Studio Code, sélectionnez l’icône Settings en regard de l’extension Azure Functions, puis sélectionnez Settings.
- Dans l’écran Settings, cochez la case en regard de Azure Functions : Autoriser la sélection du modèle de programmation.
- Fermez l’écran Paramètres .
Créer le projet de fonction
Dans Visual Studio Code, créez un projet de fonction Python avec un déclencheur HTTP.
- Appuyez sur F1 pour ouvrir la palette de commandes, puis recherchez et sélectionnez la commande Azure Functions : Créer une nouvelle Project.
- Pour sélectionner le dossier qui contiendra votre projet de fonction, sélectionnez Parcourir, puis créez un dossier ou choisissez un dossier vide pour l’espace de travail du projet. Ne choisissez pas un dossier de projet qui fait déjà partie d’un espace de travail.
- Pour Select a project type, sélectionnez Python.
- Pour Select a Python programming model, sélectionnez Model V1.
- Pour Sélectionner un interpréteur Python pour créer un environnement virtuel, sélectionnez Saisir manuellement l'interpréteur Python ou le chemin d'accès complet et entrez le chemin complet de votre exécutable Python.
- Pour sélectionner un modèle pour la première fonction de votre projet, sélectionnez le déclencheur HTTP.
- Pour fournir un nom de fonction, entrez TableStorageOutputFunc.
- Pour le niveau d’autorisation, sélectionnez Anonyme.
- Pour sélectionner la façon dont vous souhaitez ouvrir votre projet, sélectionnez Ouvrir dans la fenêtre active.
Pour plus d’informations, consultez Create et déployez le code de fonction sur Azure à l’aide de Visual Studio Code.
Ajoutez une liaison de sortie pour une table de stockage
La procédure suivante modifie les fichiersfunction.json et local.settings.json dans votre projet pour créer une liaison de sortie de table pour votre fonction.
- Cliquez avec le bouton droit sur le fichier function.json dans votre dossier de fonction, puis sélectionnez Ajouter une liaison dans le menu contextuel.
- Dans la palette de commandes, pour Sélectionner le sens de la liaison, sélectionnez out.
- Pour Sélectionnez la liaison avec la direction « out », sélectionnez Azure Table Storage.
- Pour le nom utilisé pour identifier cette liaison dans votre code, entrez outMessage.
- Pour le nom de table dans le compte de stockage où les données seront écrites, entrez testTable.
- Pour Sélectionnez le paramètre de l'application avec votre chaîne de connexion de compte de stockage à partir de "local.settings.json", sélectionnez Créer un nouveau paramètre d'application local.
- Pour Select subscription, sélectionnez votre abonnement Azure.
- Pour Sélectionner un type de compte de stockage pour le développement, sélectionnez Utiliser stockage Azure pour le stockage à distance.
- Pour Select a storage account, sélectionnez le compte stockage Azure à utiliser pour la sortie.
Vérifier le liant ajouté
Ouvrez le fichier TableStorageOutputFunc/function.json et vérifiez que la liaison de sortie de table est correctement ajoutée au fichier. Si l’une des valeurs diffère, modifiez-les aux valeurs suivantes :
{ "type": "table", "direction": "out", "name": "outMessage", "tableName": "testtable", "connection": "<your-storage-account-name>_STORAGE" }Ouvrez le fichier local.settings.json et vérifiez que la paire clé-valeur suivante se trouve dans ce fichier :
<your-storage-account-name>_STORAGE: <your-storage-account-connection-string>.
Modifier le code Python
Ouvrez le fichier TableStorageOutputFunc/__init__.py et remplacez son contenu par le code suivant :
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
Pour exécuter la fonction localement, appuyez sur F5. Si vous êtes invité à vous connecter à un compte de stockage, sélectionnez un compte stockage Azure. Cette valeur est utilisée pour l'environnement d'exécution Azure Functions et peut être, mais n'a pas besoin d'être le même compte de stockage que celui utilisé pour la sortie de la fonction.
Pendant l’exécution de la fonction, vérifiez qu’elle peut écrire dans votre table Stockage Table en cliquant avec le bouton droit sur la fonction TableStorageOutputFunc dans l’affichage Espace de travail de la barre d’activité et en sélectionnant Exécuter la fonction Maintenant. Vérifiez la réponse de la fonction pour vous assurer qu’elle contient une rowKey valeur écrite dans la table.
Déployez votre fonction sur Azure
Créez une application Azure Functions et déployez votre fonction sur Azure.
- Dans le fichier function.json de votre projet, remplacez la valeur de la propriété
connectionpar celle debindingsAZURE_STORAGETABLE_CONNECTIONSTRING. - Appuyez sur F1 pour ouvrir la palette de commandes, puis recherchez et sélectionnez la commande Azure Functions : Deploy to Function App.
- Pour Select subscription, sélectionnez votre abonnement Azure.
- Pour Sélectionner une application de fonction, sélectionnez Créer une application de fonction.
- Pour Électionnez un emplacement pour les nouvelles ressources, sélectionnez une région Azure pour votre application Azure Functions, de préférence la même région que votre compte de stockage.
- Pour entrer un nom pour la nouvelle application de fonction, vous pouvez entrer le même nom que votre fonction locale , TableStorageOutputFunc.
- Pour Select a runtime stack, sélectionnez Python 3.10.
- Pour sélectionner le type d’authentification des ressources, sélectionnez Secrets.
Important
Le flux d’authentification chaîne de connexion à l’aide de secrets nécessite un degré élevé de confiance dans l’application et comporte des risques non présents dans d’autres flux. Vous devez utiliser ce flux seulement si des flux plus sécurisés, tels que les identités managées, ne sont pas viables.
Créez une connexion à l’aide du Connecteur de services
Une fois que vous avez créé l’application Functions, vous pouvez utiliser le Service Connector pour connecter l’application à votre table de stockage, afin que votre application puisse facilement écrire des données dans votre compte de stockage. La commande suivante crée une ressource Service Connector qui configure la AZURE_STORAGETABLE_CONNECTIONSTRING variable dans les paramètres d’application de la fonction.
La liaison de fonction utilise ce paramètre d’application pour se connecter au compte de stockage afin que la fonction puisse écrire dans la table de stockage. Pour plus d’informations, consultez How Service Connector permet de Azure Functions se connecter aux services.
Pour créer la connexion, vous pouvez exécuter la commande Azure CLI suivante dans Visual Studio Code, ou utiliser Azure Cloud Shell ou local Azure CLI. Remplacez les valeurs d’espace réservé comme suit :
<function-resource-id>:/subscriptions/<your-subscription>/resourceGroups/<function-resource-group>/providers/Microsoft.Web/sites/<function-name><storage-resource-id>:/subscriptions/<your-subscription>/resourceGroups/<storage-resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>/tableServices/default
az functionapp connection create storage-table --source-id "<function-resource-id>" --target-id "<storage-resource-id>" --secret
Résoudre les problèmes
Si vous recevez des erreurs liées à l’hôte de stockage, par exemple No such host is known (<account-name>.table.core.windows.net:443), vérifiez que le chaîne de connexion utilisé pour se connecter au stockage table contient le point de terminaison de table. Si ce n’est pas le cas, accédez à la page stockage Azure, copiez la chaîne de connexion à partir des clés Access sous Security + mise en réseau et remplacez la valeur.
Si cette erreur se produit lorsque vous exécutez localement, vérifiez le fichier local.settings.json . Si l'erreur se produit lorsque vous déployez votre fonction sur Azure, vérifiez les paramètres de l'application Functions.
Nettoyer les ressources
Si vous ne souhaitez plus conserver les ressources Azure que vous avez créées dans le cadre de ce tutoriel, vous pouvez les supprimer.
Dans le portail Azure, ouvrez l’application Functions ou la ressource de compte de stockage, puis sélectionnez Delete dans la barre de menus supérieure. Entrez le nom de la ressource et sélectionnez Supprimer.
Dans Azure CLI, exécutez une ou les deux commandes suivantes, en remplaçant les espaces réservés par vos propres informations.
az functionapp delete --name <functionapp-name> --resource-group <functionapp-resource-group> az storage account delete --name <storageaccount-name> --resource-group <storageaccount-resource-group>