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 :
Les étapes suivantes décrivent les niveaux élevés de cette solution :
Lorsqu’un nouveau blob est créé dans un compte de stockage spécifique, un événement de création de fichier est déclenché.
L’événement est envoyé à Event Grid pour être traité à tous les abonnés.
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.
Le flux de travail de l’application logique se déclenche et effectue les actions suivantes :
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.
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.
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.
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.
Créez un secret à utiliser pour l’authentification en vous référant à l’Option 3 : créez une nouvelle clé secrète client.
Veillez à enregistrer la valeur de la clé secrète client générée. Cette dernière n’apparaît qu’une seule fois.
Veillez à enregistrer
client ID
ettenant id
dans le volet Vue d’ensemble de l’application.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 :
Créez une ressource d’identité managée :
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.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
Dans le Portail Azure, sur la page d’accueil Azure, sélectionnez Créer une ressource.
Dans le menu Place de marché Azure, sélectionnez Intégration>Application logique.
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 (.
).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. 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. 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.
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.
Dans la barre d’outils du concepteur de flux de travail, sélectionnez Paramètres.
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 :
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.
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.
Dans la zone d’informations de connexion, sélectionnez le type d’authentification à utiliser, puis sélectionnez Se connecter.
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. 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 :
Configurer les actions
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.
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 valeurapplication/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 :
Sous l’action Autoriser, ajoutez une autre action HTTP et renommez le titre Appeler.
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 valeurapplication/json
En-têtes Authorization
avec la valeurconcat('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). 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 :
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.
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é.
Pour vérifier que l’application a reçu un événement, vérifiez l’historique des exécutions de l’application :