Partager via


Exécuter des points de terminaison de traitement par lots à partir d’événements Event Grid dans le stockage

S’APPLIQUE À :Extension Azure CLI v2 (actuelle)Kit de développement logiciel (SDK) Python azure-ai-ml v2 (version actuelle)

Event Grid est un service complètement managé que vous pouvez utiliser pour gérer facilement des événements à travers de nombreuses applications et services Azure différents. Le service simplifie la façon dont vous générez des applications pilotées par les événements et l’informatique serverless. Le présent tutoriel vous aide à découvrir comment déclencher la tâche d’un point de terminaison du traitement par lots pour traiter les fichiers dès qu’ils sont créés dans un compte de stockage. L’architecture utilise un flux de travail de l’application logique pour s’abonner à ces événements et déclencher le point de terminaison.

Le diagramme suivant présente l’architecture de cette solution :

Le diagramme conceptuel présente les composants de cette architecture.

Les étapes suivantes décrivent les niveaux élevés de cette solution :

  1. Lorsqu’un nouveau blob est créé dans un compte de stockage spécifique, un événement de création de fichier est déclenché.

  2. L’événement est envoyé à Event Grid pour être traité à tous les abonnés.

  3. Le flux de travail de l’application logique s’abonne à ces événements et les écoute.

    Le compte de stockage peut contenir plusieurs ressources de données. Le filtrage des événements est donc appliqué pour réagir uniquement aux événements qui se produisent dans un dossier spécifique du compte de stockage. Un filtrage supplémentaire peut être effectué si nécessaire, par exemple sur la base des extensions de fichiers.

  4. Le flux de travail de l’application logique se déclenche et effectue les actions suivantes :

    1. Il obtient un jeton d’autorisation permettant d’invoquer les points de terminaison du traitement par lots à l’aide des identifiants d’un principal de service.

    2. Il déclenche le point de terminaison du traitement par lots (déploiement par défaut) à l’aide du fichier nouvellement créé en tant qu’entrée.

  5. Le point de terminaison du traitement par lots renvoie le nom de la tâche qui a été créée pour traiter le fichier.

Important

Lorsque vous utilisez un flux de travail de l’application logique qui se connecte à Event Grid pour invoquer un point de terminaison du traitement par lots, vous générez une tâche pour chaque fichier blob créé dans le compte de stockage. Gardez à l’esprit que les points de terminaison du traitement par lots distribuent la tâche au niveau du fichier, de sorte à éviter tout parallélisme. En revanche, vous utilisez la capacité des points de terminaison du traitement par lots pour exécuter plusieurs tâches sur le même cluster de calcul. Si vous avez besoin d’exécuter des tâches sur des dossiers entiers de manière automatique, nous vous recommandons de basculer vers l’option Appel des points de terminaison du traitement par lots à partir d’Azure Data Factory.

Prérequis

  • Vous avez un modèle bien déployé en tant que point de terminaison du traitement par lots. Vous pouvez étendre cette architecture pour travailler avec les déploiements de composants de pipeline si nécessaire.

  • Votre déploiement du traitement par lots s’exécute dans un cluster de calcul appelé batch-cluster.

  • L’application logique que vous créez communique avec les points de terminaison du traitement par lots d’Azure Machine Learning à l’aide de REST.

    Pour plus d’informations sur l’utilisation de l’API REST pour les points de terminaison du traitement par lots, consultez Créer des travaux et des données d’entrée pour les points de terminaison du traitement par lots.

Authentification sur les points de terminaison du traitement par lots

Azure Logic Apps peut appeler les API REST des points de terminaison du traitement par lots à l’aide de l’action HTTP. Les points de terminaison par lots prennent en charge Microsoft Entra ID pour l’autorisation et, par conséquent, la requête adressée aux API nécessite une gestion d’authentification appropriée.

Le présent tutoriel utilise un principal de service pour l’authentification des points de terminaison du traitement par lots et leur interaction avec ces derniers dans le cadre de ce scénario.

  1. Créez un principal de service en vous référant à la section Enregistrez une application avec Microsoft Entra ID et créez un principal de service.

  2. Créez un secret à utiliser pour l’authentification en vous référant à l’Option 3 : créez une nouvelle clé secrète client.

  3. Veillez à enregistrer la valeur de la clé secrète client générée. Cette dernière n’apparaît qu’une seule fois.

  4. Veillez à enregistrer client ID et tenant id dans le volet Vue d’ensemble de l’application.

  5. Accordez à votre principal de service l’accès à votre espace de travail en vous référant à la section Accorder l’accès. Pour cet exemple, le principal de service nécessite les éléments suivants :

    • Autorisation dans l’espace de travail pour lire les déploiements par lots et effectuer des actions dessus.
    • Autorisations de lecture/écriture dans les magasins de données.

Activer l’accès aux données

Pour spécifier les données d’entrée que vous souhaitez envoyer à la tâche de déploiement, le présent tutoriel utilise les URI du cloud fournis par Event Grid. Les points de terminaison du traitement par lots utilisent l’identité de calcul pour monter les données, tout en conservant l’identité de la tâche permettant de lire les données montées. Vous devez donc attribuer au cluster de calcul une identité managée affectée par l’utilisateur et vous assurer que le cluster a accès au montage des données sous-jacentes. Pour garantir l’accès aux données, suivez les étapes suivantes :

  1. Créez une ressource d’identité managée :

    IDENTITY=$(az identity create  -n azureml-cpu-cluster-idn  --query id -o tsv)
    
  2. Mettez à jour le cluster de calcul pour utiliser l’identité managée que nous avons créée :

    Remarque

    Cet exemple suppose que vous avez créé un cluster de calcul nommé cpu-cluster qui est utilisé pour le déploiement par défaut dans le point de terminaison.

    az ml compute update --name cpu-cluster --identity-type user_assigned --user-assigned-identities $IDENTITY
    
  3. Dans le Portail Azure, vérifiez que l’identité managée dispose des autorisations appropriées pour lire les données.

    Pour accéder aux services de stockage, vous devez disposer au minimum de l’accès Lecteur des données blob de stockage au compte de stockage. Seuls les propriétaires de comptes de stockage peuvent modifier votre niveau d’accès via le portail Azure.

Créer une application logique

  1. Dans le Portail Azure, sur la page d’accueil Azure, sélectionnez Créer une ressource.

  2. Dans le menu Place de marché Azure, sélectionnez Intégration>Application logique.

    Capture d’écran illustrant le menu de la place de marché Microsoft Azure, ainsi que les options sélectionnées pour l’intégration et l’application logique.

  3. Dans le volet Créer une application logique, sous l’onglet De base, fournissez les informations suivantes sur votre ressource d’application logique.

    Propriété Obligatoire Value Description
    Abonnement Oui <Azure-subscription-name> Le nom de votre abonnement Azure. Cet exemple utilise Paiement à l’utilisation.
    Groupe de ressources Oui LA-TravelTime-RG Groupe de ressources Azure dans lequel vous créez votre ressource d’application logique et les ressources associées. Ce nom doit être unique d’une région à l’autre et peut uniquement contenir des lettres, des chiffres, des traits d’union (-), des traits de soulignement (_), des parenthèses ((, )) et des points (.).
    Nom Oui LA-TravelTime Nom de votre ressource d’application logique, qui doit être unique d’une région à l’autre et peut contenir uniquement des lettres, des chiffres, des traits d’union (-), des traits de soulignement (_), des parenthèses ((, )) et des points (.).

    Capture d’écran montrant le portail Azure, le volet de création d’applications logiques et des informations pour la nouvelle ressource d’application logique.

  4. Avant de continuer à effectuer des sélections, accédez à la section Plan. Pour Type de plan, sélectionnez le plan Consommation pour afficher uniquement les paramètres d’un flux de travail de l’application logique du plan Consommation, qui s’exécute dans Azure Logic Apps multilocataire.

    Important

    Pour les espaces de travail avec lien privé, vous devez utiliser le plan Standard pour Azure Logic Apps avec une configuration de réseau privé autorisée.

    La propriété Type de plan spécifie également le modèle de facturation à utiliser.

    Type de plan Description
    Standard Ce type d’application logique est la sélection par défaut. De plus, il s’exécute dans une instance Azure Logic Apps à locataire unique et utilise le modèle de tarification standard.
    Consommation Ce type d’applications logiques s’exécute dans une instance Azure Logic Apps multilocataire mondiale et utilise le plan Consommation comme modèle de tarification.
  5. Maintenant, poursuivez avec les sélections suivantes :

    Propriété Obligatoire Value Description
    Région Oui USA Ouest Région du centre de données Azure où sont stockées les informations de votre application. Cet exemple déploie l’exemple d’application logique dans la région USA Ouest dans Azure.
    Activer l’analytique des journaux Oui Non Cette option s’affiche et s’applique uniquement lorsque vous sélectionnez le type d’application logique Consommation. Changez cette option uniquement quand vous voulez activer la journalisation des diagnostics. Pour ce tutoriel, conservez la sélection par défaut.
  6. Quand vous avez terminé, sélectionnez Vérifier + créer. Une fois qu’Azure a validé les informations relatives à votre ressource d’application logique, sélectionnez Créer.

  7. Une fois que Azure a déployé votre application, sélectionnez Accéder à la ressource.

    Azure ouvre le concepteur de flux de travail pour votre application logique.

Configurer les paramètres de workflow

Ce flux de travail de l’application logique utilise des paramètres pour stocker des éléments d’information spécifiques dont vous avez besoin pour exécuter le déploiement du traitement par lots.

  1. Dans la barre d’outils du concepteur de flux de travail, sélectionnez Paramètres.

    Capture d’écran illustrant le volet Paramètres afin de définir les paramètres requis pour le flux de travail.

  2. Dans le volet Paramètres, sélectionnez Créer un paramètreet fournissez les informations suivantes sur chaque paramètre à créer :

    Conseil

    Utilisez les valeurs configurées lors de l’Authentification avec les points de terminaison de lot.

    Nom du paramètre Description Exemple de valeur
    tenant_id ID du locataire au sein duquel le point de terminaison est déployé. 00000000-0000-0000-00000000
    client_id ID client pour le principal de service utilisé pour appeler le point de terminaison. 00000000-0000-0000-00000000
    client_secret Clé secrète client du principal de service utilisé pour appeler le point de terminaison. ABCDEFGhijkLMNOPQRstUVwz
    endpoint_uri URI de scoring du point de terminaison.

    Important : le présent URI concerne le point de terminaison que vous souhaitez exécuter. Le point de terminaison doit avoir un déploiement par défaut configuré.
    https://<endpoint_name>.<region>.inference.ml.azure.com/jobs

    L’exemple suivant présente un échantillon de paramètre :

    La capture d’écran indique comment ajouter un paramètre dans le concepteur.

    Pour plus d’informations, consultez Créer des paramètres inter-environnements pour les entrées de flux de travail dans Azure Logic Apps.

Ajouter le déclencheur

Nous souhaitons déclencher le flux de travail de l’application logique chaque fois qu’un nouveau fichier est créé dans un dossier spécifique (ressources de données) d’un compte de stockage. L’application logique utilise les informations de l’événement pour appeler le point de terminaison du traitement par lots et transmettre le fichier spécifique à traiter.

  1. Dans le concepteur de flux de travail, suivez les étapes générales suivantes pour ajouter un déclencheur Event Grid qui aura pour titre Lorsqu’un événement de ressource se produit.

  2. Dans la zone d’informations de connexion, sélectionnez le type d’authentification à utiliser, puis sélectionnez Se connecter.

  3. Dans la zone du déclencheur, indiquez les informations suivantes :

    Propriété Valeur Description
    Type de ressource Microsoft.Storage.StorageAccounts Type de ressource qui émet les événements.
    Abonnement Votre nom d’abonnement Abonnement au compte de stockage.
    Nom de la ressource Nom de votre compte de stockage Nom du compte de stockage dans lequel les fichiers sont générés.
    Élément de type d’événement Microsoft.Storage.BlobCreated Le type d'événement.
  4. Dans la liste des paramètres avancés, sélectionnez Prefix Filter et indiquez la valeur suivante :

    /blobServices/default/containers/<container-name>/blobs/<chemin d’accès pour le dossier de base de données>

    Important

    La propriété Prefix Filter permet à Event Grid de ne notifier le flux de travail que lorsqu’un blob est créé dans le chemin spécifique que nous avons indiqué. Dans ce cas, nous supposons que les fichiers sont créés par un processus externe spécifié dans le <chemin d’accès pour le dossier de base de données> à l’intérieur du conteneur <container-name>, qui se trouve dans le compte de stockage sélectionné. Configurez ce paramètre pour qu’il corresponde à l’emplacement de vos données. Dans le cas contraire, l’événement est déclenché pour tout fichier créé à n’importe quel emplacement du compte de stockage. Pour plus d’informations, consultez Filtrage d’événements pour Event Grid.

    L’exemple suivant décrit la manière dont le déclencheur s’affiche :

    Capture d’écran illustrant l’activité du déclencheur de l’application logique.

Configurer les actions

  1. Sous le déclencheur Lorsqu’un événement de ressource se produit, suivez les étapes générales suivantes pour ajouter l’action HTTP. Renommez l’action Autoriser.

  2. Dans l’action Autoriser, fournissez les informations suivantes :

    Propriété Valeur Notes
    Méthode POST La méthode HTTP
    URI concat('https://login.microsoftonline.com/', parameters('tenant_id'), '/oauth2/token') Pour saisir cette expression, sélectionnez la case URI. Parmi les options qui s’affichent, sélectionnez l’éditeur d’expression (icône de formule).
    En-têtes Content-Type avec la valeur application/x-www-form-urlencoded
    Corps concat('grant_type=client_credentials&client_id=', parameters('client_id'), '&client_secret=', parameters('client_secret'), '&resource=https://ml.azure.com') Pour saisir cette expression, sélectionnez la case Corps. Parmi les options qui s’affichent, sélectionnez l’éditeur d’expression (icône de formule).

    L’exemple suivant présente un échantillon de l’action Autoriser :

    La capture d’écran présente un échantillon de l’action Autoriser dans le flux de travail de l’application logique.

  3. Sous l’action Autoriser, ajoutez une autre action HTTP et renommez le titre Appeler.

  4. Dans l’action Appeler, fournissez les informations suivantes :

    Propriété Valeur Notes
    Méthode POST La méthode HTTP
    URI endpoint_uri Sélectionnez la case URI, puis sous Paramètres, sélectionnez endpoint_uri.
    En-têtes Content-Type avec la valeur application/json
    En-têtes Authorization avec la valeur concat('Bearer ', body('Authorize')['access_token']) Pour saisir cette expression, sélectionnez la case En-têtes. Parmi les options qui s’affichent, sélectionnez l’éditeur d’expression (icône de formule).
  5. Sélectionnez la case Corps et, parmi les options qui apparaissent, sélectionnez l’éditeur d’expression (icône de formule) pour saisir l’expression suivante :

    replace('{
     "properties": {
       "InputData": {
         "mnistinput": {
            "JobInputType" : "UriFile",
            "Uri" : "<JOB_INPUT_URI>"
         }
       }
      }
    }', '<JOB_INPUT_URI>', triggerBody()?[0]['data']['url'])
    

    Conseil

    La charge utile précédente correspond au modèle de déploiement. Si vous travaillez avec le déploiement d’un composant pipeline, adaptez le format en fonction des attentes des entrées du pipeline. Pour plus d'informations sur la manière de structurer les données d'entrée dans les appels REST, consultez Création de tâches et de données d'entrée pour les points de terminaison du traitement par lots (REST).

    L’exemple suivant présente un échantillon de l’action Appeler :

    La capture d’écran présente un échantillon de l’action Appeler dans le flux de travail de l’application logique.

    Remarque

    L’action Appeler déclenche le traitement par lots. Toutefois, l’action n’attendra pas la fin de cde traitement. Par défaut, Azure Logic Apps n’est pas configuré pour les applications de longue durée. Si vous devez attendre la fin du travail, nous vous recommandons de passer à Exécuter des points de terminaison de traitement par lots à partir d’Azure Data Factory.

  6. Lorsque vous avez terminé, enregistrez votre flux de travail.

    Le flux de travail de l’application logique est prêt à s’exécuter et se déclenche automatiquement chaque fois qu’un nouveau fichier est créé sous le chemin indiqué.

  7. Pour vérifier que l’application a reçu un événement, vérifiez l’historique des exécutions de l’application :

    Capture d’écran illustrant l’historique des exécutions pour le flux de travail de l’application logique.

Étapes suivantes