Partager via


Didacticiel : Fonction Python avec Stockage Blob Azure en tant qu’entrée

Dans ce tutoriel, vous allez apprendre à configurer une fonction Python avec Stockage Blob en tant qu’entrée en effectuant les tâches suivantes :

  • Utilisez Visual Studio Code pour créer un projet de fonction Python.
  • Modifiez les codes pour ajouter la liaison de fonction d’entrée d’objet de stockage blob.
  • Utilisez Visual Studio Code pour exécuter la fonction localement.
  • Utilisez Azure CLI pour créer une connexion entre la fonction Azure et Stockage Blob 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 Blob
Liaison de fonction Déclencheur HTTP, Stockage Blob en tant qu’entrée
Type d’authentification de projet local Chaîne de connexion
Type d’authentification de fonction cloud Identité managée affectée par le système

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 BlobStorageInputFunc.
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.

Ajouter une liaison d’entrée de Stockage Blob

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 in La liaison est une liaison d’entrée.
Sélectionner une liaison avec un sens... Azure Blob Storage La liaison est une liaison de blob de stockage Azure.
Nom utilisé pour identifier cette liaison dans votre code inputBlob Nom qui identifie le paramètre de liaison référencé dans votre code.
Chemin dans votre compte de stockage à partir duquel l'objet blob est lu testcontainer/test.txt Le chemin d’accès d’objet blob que votre fonction lit comme entrée. Préparez un fichier nommé test.txt, avec un Hello, World! en tant que contenu du fichier. Créez un conteneur nommé testcontainer et chargez le fichier dans le conteneur.
Sélectionnez le paramètre dans « local.setting.json » Create new local app settings Sélectionnez le compte de stockage que votre fonction lit en tant qu’entrée. 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 BlobStorageInputFunc/function.json, vérifiez qu’une nouvelle liaison avec type: blob et direction: in 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 BlobStorageInputFunc/__init__.py par le fichier Python ici.

import logging
import azure.functions as func

def main(req: func.HttpRequest, inputBlob: bytes) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')
    return func.HttpResponse('The triggered function executed successfully. And read blob content: {}'.format(inputBlob))

Exécuter la fonction localement

Suivez le didacticiel pour exécuter la fonction localement et vérifier l’entrée du blob.

  1. Sélectionnez le compte de stockage que vous avez utilisé lors de la création de la ressource de fonction Azure si vous êtes invité à vous connecter au stockage. Il s’agit de l’utilisation interne du runtime de fonction Azure et n’est pas nécessairement identique à celle que vous utilisez pour l’entrée.
  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 lire le blob, cliquez avec le bouton droit Execute Function Now... sur la fonction dans WORKSPACE de Visual Studio Code et vérifiez la réponse de la fonction. Le message de réponse doit contenir le contenu de votre fichier blob.

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

Vous venez d’exécuter le projet et de vérifier la fonction localement, et votre projet local se connecte à votre objet blob de stockage à l’aide d’une chaîne de connexion.

Vous allez maintenant apprendre à configurer la connexion entre Azure Function et le Stockage Azure Blob, afin que votre fonction puisse lire le blob de stockage après avoir été déployée dans le cloud. Dans l’environnement cloud, nous montrons comment s’authentifier à l’aide d’une identité managée affectée par le système.

  1. Ouvrez le fichier function.json dans votre projet local, modifiez la valeur de la propriété connection dans bindings pour qu’elle soit MyBlobInputConnection.
  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-blob --source-id "<your-function-resource-id>" --target-id "<your-storage-blob-resource-id>" --system-identity --customized-keys AZURE_STORAGEBLOB_RESOURCEENDPOINT=MyBlobInputConnection__serviceUri
  • --source-id format : /subscriptions/{subscription}/resourceGroups/{source_resource_group}/providers/Microsoft.Web/sites/{site}
  • --target-id format : /subscriptions/{subscription}/resourceGroups/{target_resource_group}/providers/Microsoft.Storage/storageAccounts/{account}/blobServices/default

Vous avez créé une connexion entre Azure Function et Stockage Blob Azure à l’aide de Service Connector, avec une identité managée affectée par le système.

Service Connector a configuré une variable MyBlobInputConnection__serviceUri dans les paramètres d’application de la fonction utilisés par le runtime de liaison de fonction pour se connecter au stockage, afin que la fonction puisse lire les données à partir du stockage d’objets blob. 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 d’entrée du blob de stockage fonctionne.

  1. Suivez ce didacticiel pour déployer votre fonction sur Azure.
  2. Pour vérifier que la fonction peut lire le blob, cliquez avec le bouton droit 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 le contenu de votre fichier blob.

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 (<account-name>.blob.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 du blob ou non. Si ce n’est pas le cas, accédez au Stockage Azure au sein du portail Azure, copiez la chaîne de connexion à partir du panneau Access keys et remplacez les valeurs.

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

Si l’erreur se produit lorsque vous déployez votre fonction au 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.