Tutoriel : Déclencher une tâche Batch à l’aide d’Azure Functions

Dans ce tutoriel, vous allez apprendre à déclencher une tâche Batch à l’aide d’Azure Functions. Cet article décrit un exemple qui prend en charge les documents ajoutés à un conteneur d’objets blob stockage Azure qui applique la reconnaissance optique de caractères (OCR) à l’aide de Azure Batch. Pour rationaliser le traitement OCR, cet exemple configure une fonction Azure qui exécute une tâche OCR Batch chaque fois qu’un fichier est ajouté au conteneur d’objets blob. Vous allez apprendre à effectuer les actions suivantes :

  • Utilisez le Portail Azure pour créer des pools et des tâches.
  • Créez des conteneurs d’objets blob et une signature d’accès partagé (SAP).
  • Créer une fonction Azure déclenchée par un objet blob.
  • Charger des fichiers d’entrée sur le stockage.
  • Surveiller l’exécution d’une tâche.
  • Récupérer les fichiers de sortie.

Prérequis

Connexion à Azure

Connectez-vous au portail Azure.

Créer un pool Batch et une tâche Batch avec le Portail Azure

Dans cette section, vous allez utiliser le Portail Azure pour créer le pool Batch et la tâche Batch qui vont exécuter les tâches de reconnaissance optique de caractères (OCR).

Créer un pool

  1. Connectez-vous au Portail Azure à l’aide de vos informations d’identification Azure.

  2. Créez un pool en sélectionnant Pools dans la barre de navigation gauche, puis sélectionnez le bouton Ajouter au-dessus du formulaire de recherche.

    Capture d'écran de la page Pools d'un compte Batch qui met en évidence le bouton Ajouter.

    1. Entrez un ID de pool. Cet exemple nomme le pool ocr-pool.
    2. Sélectionnez canonique comme serveur de publication.
    3. Sélectionnez 0001-com-ubuntu-server-jammy comme Offre.
    4. Sélectionnez 22_04-lts comme référence SKU.
    5. Choisissez Standard_F2s_v2 - 2 vCPUs, 2 GB Memory comme taille de machine virtuelle dans la section Taille du nœud.
    6. Définissez Mode dans la section Mise à l’échelle sur Fixe, puis entrez 3 pour les Nœuds dédiés cibles.
    7. Définissez Démarrer la tâche sur Activé la tâche de démarrage, puis entrez la commande /bin/bash -c "sudo update-locale LC_ALL=C.UTF-8 LANG=C.UTF-8; sudo apt-get update; sudo apt-get -y install ocrmypdf" dans Ligne de commande. Veillez à définir le Niveau d'élévation sur utilisateur automatique du Pool, administrateur, ce qui permet aux tâches de démarrage d’inclure des commandes avec sudo.
    8. Sélectionnez OK.

Créer un travail

  1. Créez une tâche sur le pool en sélectionnant Tâches dans la barre de navigation gauche, puis le bouton Ajouter au-dessus du formulaire de recherche.
    1. Entrez un ID de tâche. Cet exemple utilise ocr-job.
    2. Sélectionnez ocr-pool pour le Pool actuel, ou le nom que vous avez choisi pour votre pool.
    3. Sélectionnez OK.

Créer des conteneurs d’objets blob

Ici, vous allez créer des conteneurs d’objets blob pour stocker vos fichiers d’entrée et de sortie pour la tâche Batch de reconnaissance optique de caractères (OCR). Dans cet exemple, le conteneur d’entrée est nommé input et correspond à l’emplacement auquel tous les documents sans reconnaissance optique de caractères (OCR) sont initialement chargés à des fins de traitement. Le conteneur de sortie est nommé output et correspond à l’emplacement auquel la tâche Batch écrit des documents traités avec la reconnaissance optique de caractères (OCR).

  1. Dans le Portail Azure, recherchez et sélectionnez Comptes de stockage.

  2. Choisissez votre compte de stockage lié à votre compte Batch.

  3. Sélectionnez Conteneurs dans la navigation de gauche, et créez deux conteneurs d’objets blob (un pour les fichiers d’entrée, un pour les fichiers de sortie) en suivant les étapes indiquées dans Créer un conteneur d’objets blob.

  4. Créez une signature d’accès partagé pour votre conteneur de sortie en sélectionnant le conteneur de sortie, puis, dans la page Jetons d’accès partagé, sélectionnez Écrire dans la liste déroulante Autorisations. Aucune autre autorisation n’est nécessaire.

  5. Sélectionnez Générer un jeton SAS et une URL, puis copiez l’URL SAS d’objet blob à utiliser ultérieurement pour votre fonction.

    Capture d'écran de la page des jetons d'accès partagés mettant en évidence le menu déroulant Permissions et le bouton Générer le jeton SAS et l'URL.

Création d’une fonction Azure

Dans cette section, vous allez créer la fonction Azure qui déclenche la tâche Batch de reconnaissance optique de caractères (OCR) chaque fois qu’un fichier est chargé dans votre conteneur d’entrée.

  1. Suivez les étapes indiquées dans Créer une fonction déclenchée par un stockage Blob Azure pour créer une fonction.

    1. Pour la pile d’exécution, choisissez .NET. Cet exemple de fonction utilise C# pour tirer parti du Kit de développement logiciel (SDK) Batch .NET.
    2. Dans la page Stockage, utilisez le même compte de stockage que celui que vous avez lié à votre compte Batch.
    3. Sélectionnez Vérifier + créer > Créer.

    La capture d’écran suivante de la page Créer une application de fonction sous l’onglet Informations de base à l’aide d’exemples d’informations.

    Capture d'écran de la page Créer une application de fonction dans l'onglet Informations de base à l’aide d’exemples d’informations.

  2. Dans votre fonction, sélectionnez Fonctions dans le volet de navigation gauche, puis sélectionnez Créer.

  3. Dans le volet Créer une fonction, sélectionnez Stockage Blob Azure déclencheur.

  4. Entrez un nom pour votre fonction dans Nouvelle fonction. Dans cet exemple, le nom est OcrTrigger. Entrez le chemin d’accès sous la forme input/{name}, où entrée dans le nom de votre conteneur d’objets blob.

  5. Sélectionnez Create (Créer).

    Capture d'écran du volet Créer une fonction qui met en évidence l'option de déclenchement du stockage Blob Azure et les champs Nouvelle fonction et Chemin d'accès.

  6. Une fois que vous avez créé la fonction déclenchée par un objet blob, sélectionnez Code + test. Utilisez les fichiers run.csx et function.proj de GitHub dans la fonction. function.proj n’existe pas par défaut. Par conséquent, sélectionnez le bouton Charger pour le charger dans votre espace de travail de développement.

    • run.csx est exécuté quand un nouvel objet blob est ajouté à votre conteneur d’objets blob d’entrée.
    • function.proj liste les bibliothèques externes dans votre code de fonction, par exemple, le SDK .NET Batch.
  7. Modifiez les valeurs des espaces réservés des variables dans la fonction Run() du fichier run.csx pour qu’elles reflètent vos informations d’identification Batch et de stockage. Celles-ci figurent, dans le portail Azure, dans la section Clés de votre compte Batch et de stockage.

Déclencher la fonction et récupérer les résultats

Chargez sur votre conteneur d’entrée une partie ou la totalité des fichiers analysés à partir du répertoire input_files de GitHub.

Vous pouvez tester votre fonction à partir de Portail Azure sur la page Code + Test de votre fonction.

  1. Sélectionnez Tester/exécuter dans la page Code + Test.
  2. Entrez le chemin d’accès de votre conteneur d’entrée dans Corps sous l’onglet Entrée.
  3. Sélectionnez Exécuter.

À l’issue de quelques secondes, le fichier avec la reconnaissance optique de caractères (OCR) appliquée est ajouté au conteneur de sortie. Les sorties d’informations de journal dans la fenêtre inférieure. Ce fichier est alors visible et récupérable sur l’Explorateur Stockage.

Vous pouvez également trouver les informations de journal sur la page Surveiller :

2019-05-29T19:45:25.846 [Information] Creating job...
2019-05-29T19:45:25.847 [Information] Accessing input container <inputContainer>...
2019-05-29T19:45:25.847 [Information] Adding <fileName> as a resource file...
2019-05-29T19:45:25.848 [Information] Name of output text file: <outputTxtFile>
2019-05-29T19:45:25.848 [Information] Name of output PDF file: <outputPdfFile>
2019-05-29T19:45:26.200 [Information] Adding OCR task <taskID> for <fileName> <size of fileName>...

Pour télécharger les fichiers de sortie sur votre ordinateur local, accédez au conteneur de sortie dans votre compte de stockage. Sélectionnez d’autres options sur le fichier souhaité, puis sélectionnez Télécharger.

Conseil

Les fichiers téléchargés peuvent faire l’objet d’une recherche si vous les ouvrez dans un lecteur PDF.

Nettoyer les ressources

Vous êtes facturé pour le pool pendant que les nœuds sont en cours d’exécution, même si aucun travail n’est planifié. Quand vous n’avez plus besoin du pool, supprimez-le en procédant comme suit :

  1. Dans la page Pools de votre compte Batch, sélectionnez d’autres options sur votre pool.
  2. Sélectionnez Supprimer.

Lorsque vous supprimez le pool, toutes les sorties de tâche sur les nœuds sont supprimées. Toutefois, les fichiers de sortie restent dans le compte de stockage. Quand vous n’en avez plus besoin, vous pouvez également supprimer le compte Batch et le compte de stockage.

Étapes suivantes

Pour plus d’exemples d’utilisation de l’API .NET pour planifier et traiter les charges de travail Batch, consultez les exemples sur GitHub.