Share via


Ausführen von Batchendpunkten über Event Grid-Ereignisse im Speicher

GILT FÜR:Azure CLI ML-Erweiterung v2 (aktuell)Python SDK azure-ai-ml v2 (aktuell)

Event Grid ist ein vollständig verwalteter Dienst, mit dem Sie Ereignisse problemlos über viele verschiedene Azure-Dienste und -Anwendungen hinweg verwalten können. Er vereinfacht das Erstellen ereignisgesteuerter und serverloser Anwendungen. In diesem Tutorial erfahren Sie, wie Sie den Auftrag eines Batchendpunkts auslösen, um Dateien zu verarbeiten, sobald sie in einem Speicherkonto erstellt werden. In dieser Architektur verwenden wir eine Logik-App, um diese Ereignisse zu abonnieren und den Endpunkt auszulösen.

Der Workflow sieht wie folgt aus:

Diagram displaying the different components of the architecture.

  1. Ein Dateierstellungsereignis wird ausgelöst, wenn ein neues Blob in einem bestimmten Speicherkonto erstellt wird.

  2. Das Ereignis wird an Event Grid gesendet, damit es an alle Abonnenten weitergeleitet werden kann.

  3. Eine Logik-App wird abonniert, um auf diese Ereignisse zu lauschen. Da das Speicherkonto mehrere Datenressourcen enthalten kann, wird die Ereignisfilterung so angewendet, dass sie nur auf Ereignisse reagiert, die in einem bestimmten enthaltenen Ordner stattfinden. Bei Bedarf kann eine weitere Filterung durchgeführt werden (z. B. basierend auf Dateierweiterungen).

  4. Die Logik-App wird ausgelöst, was wiederum Folgendes bewirkt:

    1. Ein Autorisierungstoken zum Aufrufen von Batchendpunkten wird mithilfe der Anmeldeinformationen aus einem Dienstprinzipal abgerufen

    2. Der Batchendpunkt (Standardbereitstellung) wird mit der neu erstellten Datei als Eingabe ausgelöst.

  5. Der Batchendpunkt gibt den Namen des Auftrags zurück, der zur Verarbeitung der Datei erstellt wurde.

Wichtig

Wenn Sie eine mit Event Grid verbundene Logik-App verwenden, um einen Batchendpunkt aufzurufen, generieren Sie einen Auftrag pro Blobdatei, die im Speicherkonto erstellt wurde. Beachten Sie, dass keine Parallelisierung stattfindet, da Batchendpunkte die Arbeit auf Dateiebene verteilen. Stattdessen nutzen Sie die Vorteile der Funktion der Batchendpunkte, mehrere Aufträge unter demselben Computecluster auszuführen. Wenn Sie Aufträge für ganze Ordner automatisiert ausführen müssen, empfiehlt es sich, zu Aufrufen von Batchendpunkten über Azure Data Factory zu wechseln.

Voraussetzungen

  • In diesem Beispiel wird davon ausgegangen, dass ein Modell ordnungsgemäß als Batchendpunkt bereitgestellt wurde. Diese Architektur kann bei Bedarf perfekt erweitert werden, um mit Bereitstellungen von Pipelinekomponenten zu arbeiten.
  • In diesem Beispiel wird davon ausgegangen, dass Ihre Batchbereitstellung in einem Computecluster mit dem Namen batch-cluster ausgeführt wird.
  • Die von uns erstellte Logik-App kommuniziert mit Azure Machine Learning-Batchendpunkten mithilfe von REST. Weitere Informationen zur Verwendung der REST-API von Batchendpunkten finden Sie unter Erstellen von Aufträgen und Eingabedaten für Batchendpunkte.

Authentifizieren bei Batchendpunkten

Azure Logic Apps kann die REST-APIs von Batchendpunkten mithilfe der HTTP-Aktivität aufrufen. Batch-Endpunkte unterstützen Microsoft Entra ID bei der Autorisierung, und daher ist für die Anforderung an die APIs eine ordnungsgemäße Vorgehensweise bei der Authentifizierung erforderlich.

Es wird empfohlen, einen Dienstprinzipal für die Authentifizierung und Interaktion mit Batchendpunkten in diesem Szenario zu verwenden.

  1. Erstellen Sie einen Dienstprinzipal gemäß den Schritten unter Registrieren einer Anwendung mit Microsoft Entra ID und Erstellen eines Dienstprinzipals.

  2. Erstellen Sie ein Geheimnis für die Verwendung in der Authentifizierung, wie unter Option 3: Erstellen eines neuen geheimen Clientschlüssels beschrieben.

  3. Notieren Sie sich den Wert des geheimen Clientschlüssels, der generiert wird. Dieses wird nur einmal angezeigt.

  4. Notieren Sie sich die client ID und die tenant id im Bereich Übersicht der Anwendung.

  5. Gewähren Sie den Zugriff für den Dienstprinzipal, den Sie für Ihren Arbeitsbereich erstellt haben, wie unter Gewähren von Zugriff erläutert. In diesem Beispiel ist für den Dienstprinzipal Folgendes erforderlich:

    1. Die Berechtigung im Arbeitsbereich, Batchbereitstellungen zu lesen und Aktionen dafür auszuführen.
    2. Berechtigungen, in Datenspeichern zu lesen/schreiben.

Aktivieren des Datenzugriffs

Wir verwenden Cloud-URIs, die von Event Grid bereitgestellt werden, um die Eingabedaten anzugeben, die an den Bereitstellungsauftrag gesendet werden sollen. Batchendpunkte verwenden die Identität des Computes, um die Daten bereitzustellen, während die Identität des Auftrags beibehalten wird, um sie nach der Bereitstellung zu lesen. Daher müssen wir dem Computecluster eine benutzerseitig zugewiesene verwaltete Identität zuweisen, um sicherzustellen, dass er die zugrunde liegenden Daten bereitstellen kann. Führen Sie die folgenden Schritte aus, um den Datenzugriff sicherzustellen:

  1. Erstellen Sie eine Ressource der verwalteten Identität:

    IDENTITY=$(az identity create  -n azureml-cpu-cluster-idn  --query id -o tsv)
    
  2. Aktualisieren Sie den Computecluster, um die verwaltete Identität zu verwenden, die wir erstellt haben:

    Hinweis

    In diesen Beispielen wird davon ausgegangen, dass ein Computecluster mit dem Namen cpu-cluster erstellt wurde und für die Standardbereitstellung im Endpunkt verwendet wird.

    az ml compute update --name cpu-cluster --identity-type user_assigned --user-assigned-identities $IDENTITY
    
  3. Wechseln Sie zum Azure-Portal, und stellen Sie sicher, dass die verwaltete Identität über die richtigen Berechtigungen zum Lesen der Daten verfügt. Für den Zugriff auf Speicherdienste benötigen Sie mindestens die Zugriffsberechtigung Leser von Speicherblobdaten für das Speicherkonto. Nur Speicherkontobesitzer können Ihre Zugriffsebene über das Azure-Portal ändern.

Erstellen einer Logik-App

  1. Melden Sie sich beim Azure-Portal mit Ihrem Azure-Konto an.

  2. Wählen Sie auf der Azure-Startseite Ressource erstellen aus.

  3. Wählen Sie im Azure Marketplace-Menü Integration>Logik-App aus.

    Screenshot that shows Azure Marketplace menu with

  4. Geben Sie im Bereich Logik-App erstellen auf der Registerkarte Grundlagen die folgenden Informationen zu Ihrer Logik-App-Ressource ein.

    Screenshot showing Azure portal, logic app creation pane, and info for new logic app resource.

    Eigenschaft Erforderlich Wert BESCHREIBUNG
    Abonnement Ja <Name des Azure-Abonnements> Den Namen Ihres Azure-Abonnements In diesem Beispiel wird Nutzungsbasierte Zahlung verwendet.
    Ressourcengruppe Ja LA-TravelTime-RG Die Azure-Ressourcengruppe, in der Sie Ihre Logik-App-Ressource und zugehörige Ressourcen erstellen. Dieser Name muss regionsübergreifend eindeutig sein und darf nur Buchstaben, Ziffern, Bindestriche (-), Unterstriche (_), Klammern ((, )) und Punkte (.) enthalten.
    Name Ja LA-TravelTime Der Name Ihrer Logik-App-Ressource, der regionsübergreifend eindeutig sein muss und nur Buchstaben, Ziffern, Bindestriche (-), Unterstriche (_), Klammern ((, )) und Punkte (.) enthalten darf.
  5. Bevor Sie die Auswahl fortsetzen, wechseln Sie zum Abschnitt Plan. Wählen Sie als Plantyp die Option Verbrauch aus, um nur die Einstellungen für einen Verbrauchs-Logik-App-Workflow anzuzeigen, der in mehrinstanzenfähigem Azure Logic Apps ausgeführt wird.

    Die Eigenschaft Plantyp gibt auch das zu verwendende Abrechnungsmodell an.

    Plantyp BESCHREIBUNG
    Standard Dieser Logik-App-Typ ist die Standardoption. Er wird in Azure Logic Apps-Instanzen mit einem einzelnen Mandanten ausgeführt und verwendet das Standard-Abrechnungsmodell.
    Verbrauch Dieser Logik-App-Typ wird in globalen Azure Logic Apps-Instanzen mit mehreren Mandanten ausgeführt und verwendet das verbrauchsbasierte Abrechnungsmodell.

    Wichtig

    Für Arbeitsbereiche mit aktivierter privater Verbindung müssen Sie den Standardplan für Logic Apps mit zulässiger Konfiguration privater Netzwerke verwenden.

  6. Treffen Sie nun die folgenden Auswahlen:

    Eigenschaft Erforderlich Wert BESCHREIBUNG
    Region Ja USA, Westen Die Azure-Rechenzentrumsregion zum Speichern der Informationen Ihrer App. In diesem Beispiel wird die exemplarische Logik-App in der Region USA, Westen in Azure bereitgestellt.

    Hinweis: Wenn Ihr Abonnement einer Integrationsdienstumgebung (Integration Service Environment, ISE) zugeordnet ist, enthält die Liste auch diese Umgebung.
    Aktivieren von Log Analytics Ja Nein Diese Option wird nur angezeigt und gilt nur, wenn Sie den Logik-App-Typ Verbrauch auswählen. Ändern Sie diese Option nur, wenn Sie die Diagnoseprotokollierung aktivieren möchten. Behalten Sie für dieses Tutorial die Standardauswahl bei.
  7. Wählen Sie abschließend Überprüfen + erstellen aus. Warten Sie, bis Azure die Informationen zu Ihrer Logik-App-Ressource überprüft hat, und wählen Sie anschließend Erstellen aus.

  8. Warten Sie, bis Azure Ihre App bereitgestellt hat, und wählen Sie anschließend Zu Ressource wechseln aus.

    Azure öffnet den Bereich zum Auswählen einer Workflowvorlage. Hier finden Sie ein Einführungsvideo, häufig verwendete Trigger sowie Workflowvorlagenmuster.

  9. Scrollen Sie am Video und an den gängigen Triggern vorbei nach unten zum Abschnitt Vorlagen, und wählen Sie Leere Logik-App aus.

    Screenshot that shows the workflow template selection pane with

Konfigurieren der Workflowparameter

Diese Logik-App verwendet Parameter, um bestimmte Informationen zu speichern, die Sie zum Ausführen der Batchbereitstellung benötigen.

  1. Wählen Sie im Workflow-Designer unter der Toolleiste die Option Parameter aus, und konfigurieren Sie sie wie folgt:

    Screenshot of all the parameters required in the workflow.

  2. Um einen Parameter zu erstellen, verwenden Sie die Option Parameter hinzufügen:

    Screenshot showing how to add one parameter in designer.

  3. Erstellen Sie die folgenden Parameter.

    Parameter BESCHREIBUNG Beispielwert
    tenant_id Die Mandanten-ID, in der der Endpunkt bereitgestellt wird. 00000000-0000-0000-00000000
    client_id Die Client-ID des Dienstprinzipals, die zum Aufrufen des Endpunkts verwendet wird. 00000000-0000-0000-00000000
    client_secret Der geheime Clientschlüssel des Dienstprinzipals, der zum Aufrufen des Endpunkts verwendet wird. ABCDEFGhijkLMNOPQRstUVwz
    endpoint_uri Der Endpunktbewertungs-URI. https://<endpoint_name>.<region>.inference.ml.azure.com/jobs

    Wichtig

    endpoint_uri ist der URI des Endpunkts, den Sie ausführen möchten. Für den Endpunkt muss eine Standardbereitstellung konfiguriert sein.

    Tipp

    Verwenden Sie die Werte, die unter Authentifizieren bei Batchendpunkten konfiguriert wurden.

Hinzufügen des Triggers

Wir möchten die Logik-App jedes Mal auslösen, wenn eine neue Datei in einem bestimmten Ordner (Datenressource) eines Speicherkontos erstellt wird. Die Logik-App verwendet auch die Informationen des Ereignisses, um den Batchendpunkt aufzurufen und die bestimmte zu verarbeitende Datei zu übergeben.

  1. Wählen Sie im Workflow-Designer unterhalb des Suchfelds die Option Integriert aus.

  2. Geben Sie in das Suchfeld Event Grid ein, und wählen Sie den Trigger mit dem Namen Bei Eintritt eines Ressourcenereignisses aus.

  3. Konfigurieren Sie den Trigger folgendermaßen:

    Eigenschaft Wert BESCHREIBUNG
    Abonnement Ihr Abonnementname Das Abonnement, in dem das Azure Storage-Konto platziert wird.
    Ressourcentyp Microsoft.Storage.StorageAccounts Der Typ der Ressource, die die Ereignisse ausgibt.
    Ressourcenname Name Ihres Speicherkontos Der Name des Speicherkontos, in dem die Dateien generiert werden.
    Ereignistypelement Microsoft.Storage.BlobCreated Der Ereignistyp.
  4. Klicken Sie auf Neuen Parameter hinzufügen, und wählen Sie Präfixfilter aus. Fügen Sie den Wert /blobServices/default/containers/<container_name>/blobs/<path_to_data_folder> hinzu.

    Wichtig

    Durch den Präfixfilter hat Event Grid die Möglichkeit, den Workflow nur dann zu benachrichtigen, wenn in dem von uns angegebenen bestimmten Pfad ein Blob erstellt wird. In diesem Fall gehen wir davon aus, dass Dateien von einem bestimmten externen Prozess im Order <path_to_data_folder> im Container <container_name> im ausgewählten Speicherkonto erstellt werden. Konfigurieren Sie diesen Parameter so, dass er dem Speicherort Ihrer Daten entspricht. Andernfalls wird das Ereignis für jede Datei ausgelöst, die an einem beliebigen Speicherort des Speicherkontos erstellt wird. Weitere Details finden Sie unter Grundlegendes zur Ereignisfilterung für Event Grid-Abonnements.

    Der Trigger sieht wie folgt aus:

    Screenshot of the trigger activity of the Logic App.

Konfigurieren der Aktionen

  1. Klicken Sie auf + Neuer Schritt.

  2. Wählen Sie im Workflow-Designer unterhalb des Suchfelds die Option Integriert aus, und klicken Sie dann auf HTTP:

  3. Konfigurieren Sie die Aktion folgendermaßen:

    Eigenschaft Wert Notizen
    Methode POST Die HTTP-Methode
    URI concat('https://login.microsoftonline.com/', parameters('tenant_id'), '/oauth2/token') Klicken Sie auf Add dynamic context (Dynamischen Kontext hinzufügen) und dann auf Expression (Ausdruck), um diesen Ausdruck einzugeben.
    Headers Content-Type mit Wert application/x-www-form-urlencoded
    Text concat('grant_type=client_credentials&client_id=', parameters('client_id'), '&client_secret=', parameters('client_secret'), '&resource=https://ml.azure.com') Klicken Sie auf Add dynamic context (Dynamischen Kontext hinzufügen) und dann auf Expression (Ausdruck), um diesen Ausdruck einzugeben.

    Die Aktion sieht wie folgt aus:

    Screenshot of the authorize activity of the Logic App.

  4. Klicken Sie auf + Neuer Schritt.

  5. Wählen Sie im Workflow-Designer unterhalb des Suchfelds die Option Integriert aus, und klicken Sie dann auf HTTP:

  6. Konfigurieren Sie die Aktion folgendermaßen:

    Eigenschaft Wert Notizen
    Methode POST Die HTTP-Methode
    URI endpoint_uri Klicken Sie auf Add dynamic context (Dynamischen Kontext hinzufügen), und wählen Sie ihn dann unter parameters aus.
    Headers Content-Type mit Wert application/json
    Headers Authorization mit Wert concat('Bearer ', body('Authorize')['access_token']) Klicken Sie auf Add dynamic context (Dynamischen Kontext hinzufügen) und dann auf Expression (Ausdruck), um diesen Ausdruck einzugeben.
  7. Klicken Sie im Parameter Body (Hauptteil) auf Add dynamic context (Dynamischen Kontext hinzufügen) und dann auf Expression (Ausdruck), um den folgenden Ausdruck einzugeben:

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

    Tipp

    Die vorherige Nutzlast entspricht einer Modellimplementierung. Wenn Sie mit einer Pipelinekomponentenbereitstellung arbeiten, passen Sie das Format entsprechend an die Erwartungen der Eingaben der Pipeline an. Weitere Informationen zum Strukturieren der Eingabe in REST-Aufrufen finden Sie unter Erstellen von Aufträgen und Eingabedaten für Batchendpunkte (REST).

    Die Aktion sieht wie folgt aus:

    Screenshot of the invoke activity of the Logic App.

    Hinweis

    Beachten Sie, dass diese letzte Aktion den Batchauftrag auslöst, jedoch nicht auf dessen Abschluss wartet. Azure Logic Apps ist nicht für zeitintensive Anwendungen konzipiert. Wenn Sie auf den Abschluss des Auftrags warten müssen, empfiehlt es sich, zu Ausführen von Batchendpunkten über Azure Data Factory zu wechseln.

  8. Klicken Sie auf Speichern.

  9. Die Logik-App ist für die Ausführung bereit und wird jedes Mal automatisch ausgelöst, wenn eine neue Datei unter dem angegebenen Pfad erstellt wird. Durch Überprüfen des Ausführungsverlaufs können Sie feststellen, dass die App das Ereignis erfolgreich empfangen hat:

    Screenshot of the invoke history of the Logic App.

Nächste Schritte