Teilen über


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. Der Dienst vereinfacht die Art und Weise, wie Sie ereignisgesteuerte und serverlose Anwendungen erstellen. In diesem Tutorial erfahren Sie, wie Sie den Auftrag eines Batchendpunkts auslösen, um Dateien zu verarbeiten, sobald sie in einem Speicherkonto erstellt werden. Diese Architektur verwendet einen Logik-App-Workflow, um diese Ereignisse zu abonnieren und den Endpunkt auszulösen.

Das folgende Diagramm zeigt die Architektur für diese Lösung:

Das konzeptionelle Diagramm zeigt die Komponenten für diese Architektur.

In den folgenden Schritten werden die allgemeinen Schritte in dieser Lösung beschrieben:

  1. Wenn ein neues Blob in einem bestimmten Speicherkonto erstellt wird, wird ein Ereignis Datei erstellt ausgelöst.

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

  3. Der Logik-App-Workflow abonniert und lauscht auf diese Ereignisse.

    Das Speicherkonto kann mehrere Datenressourcen enthalten. Deshalb wird die Ereignisfilterung angewendet, damit eine Reaktion nur auf Ereignisse erfolgt, die in einem bestimmten Ordner im Speicherkonto stattfinden. Bei Bedarf kann eine weitere Filterung durchgeführt werden, z. B. basierend auf Dateierweiterungen.

  4. Der Logik-App-Workflow wird ausgelöst und führt die folgenden Aktionen aus:

    1. Ein Autorisierungstoken zum Aufrufen von Batchendpunkten wird mithilfe der Anmeldeinformationen von 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 einen Logik-App-Workflow verwenden, der mit Event Grid verbunden wird, um den Batchendpunkt aufzurufen, generieren Sie einen Auftrag für jede Blobdatei, die im Speicherkonto erstellt wird. Beachten Sie, dass Batchendpunkte die Arbeit auf Ebene der Datei verteilen. Deshalb findet keine Parallelisierung statt. Stattdessen verwenden Sie die Fähigkeit der Batchendpunkte, mehrere Aufträge auf 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

  • Sie haben ein Modell ordnungsgemäß als Batchendpunkt bereitgestellt. Sie können diese Architektur erweitern, um mit Bereitstellungen von Pipelinekomponenten zu arbeiten, sofern erforderlich.

  • Ihre Batchbereitstellung wird in einem Computecluster mit dem Namen batch-cluster ausgeführt.

  • Die von Ihnen erstellte Logik-App kommuniziert mit Azure Machine Learning-Batchendpunkten mithilfe von REST.

    Weitere Informationen zur Verwendung der REST-API für Batchendpunkte 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-Aktion aufrufen. Batch-Endpunkte unterstützen Microsoft Entra ID für die Autorisierung, so dass die an die APIs gerichteten Anforderungen eine angemessene Authentifizierungsverarbeitung erfordern.

In diesem Tutorial wird ein Dienstprinzipal für die Authentifizierung und Interaktion mit Batchendpunkten in diesem Szenario verwendet.

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

  2. Erstellen Sie ein Geheimnis für die Verwendung bei der Authentifizierung gemäß den Anleitungen in Option 3: Erstellen eines neuen geheimen Clientschlüssels.

  3. Achten Sie darauf, den generierten Wert des geheimen Clientschlüssels zu speichern, der nur einmal angezeigt wird.

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

  5. Gewähren Sie Ihrem Dienstprinzipal Zugriff auf Ihren Arbeitsbereich, indem Sie den Anleitungen unter Gewähren des Zugriffs folgen. In diesem Beispiel ist für den Dienstprinzipal Folgendes erforderlich:

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

Aktivieren des Datenzugriffs

Zur Angabe der Eingabedaten, die Sie an den Bereitstellungsauftrag senden möchten, verwendet dieses Tutorial die von Event Grid bereitgestellten Cloud-URIs. Batchendpunkte verwenden die Identität der Computeinstanz, um die Daten einzubinden, während die Identität des Auftrags beibehalten wird, um die eingebundenen Daten zu lesen. Deshalb müssen Sie dem Computecluster eine benutzerseitig zugewiesene verwaltete Identität zuweisen und sicherstellen, dass der Cluster über Zugriff für die Einbindung der zugrunde liegenden Daten verfügt. Führen Sie diese 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. Stellen Sie im Azure-Portal 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. Wählen Sie im Azure-Portal oder auf der Azure-Startseite die Option Ressource erstellen aus.

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

    Screenshot: Azure Marketplace-Menü mit ausgewählten Optionen für Integration und Logik-App.

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

    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.

    Screenshot des Azure-Portals mit dem Bereich zum Erstellen einer Logik-App und Informationen zur neuen Logik-App-Ressource.

  4. 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 Logik-App-Workflow des Typs „Verbrauch“ anzuzeigen, der in mehrmandantenfähigen Azure Logic Apps ausgeführt wird.

    Wichtig

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

    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-Preismodell.
    Verbrauch Dieser Logik-App-Typ wird in globalen Azure Logic Apps-Instanzen mit mehreren Mandanten ausgeführt und verwendet das verbrauchsbasierte Preismodell.
  5. 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.
  6. 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.

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

    Azure öffnet den Workflow-Designer für Ihre Logik-App.

Konfigurieren der Workflowparameter

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

  1. Wählen Sie in der Symbolleiste des Workflow-Designers die Option Parameter aus.

    Screenshot: Bereich „Parameter“ zum Definieren von Parametern, die für den Workflow erforderlich sind.

  2. Wählen Sie im Bereich Parameter die Option Parameter erstellen aus, und geben Sie die folgenden Informationen zu den einzelnen Parametern an, die erstellt werden sollen:

    Tipp

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

    Parametername Beschreibung Beispielwert
    tenant_id Die ID des Mandanten, in dem der Endpunkt bereitgestellt wird. 00000000-0000-0000-00000000
    client_id Die Client-ID des Dienstprinzipals, der 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.

    Wichtig: Dies ist der URI für den Endpunkt, den Sie ausführen möchten. Für den Endpunkt muss eine Standardbereitstellung konfiguriert sein.
    https://<endpoint_name>.<region>.inference.ml.azure.com/jobs

    Das folgende Beispiel zeigt einen Beispielparameter:

    Screenshot: Hinzufügen eines Parameters im Designer.

    Weitere Informationen finden Sie unter Erstellen von umgebungsübergreifenden Parametern für Workfloweingaben in Azure Logic Apps.

Hinzufügen des Triggers

Der Logik-App-Workflow soll jedes Mal ausgelöst werden, wenn eine neue Datei in einem bestimmten Ordner (Datenressource) eines Speicherkontos erstellt wird. Die Logik-App verwendet die Informationen des Ereignisses, um den Batchendpunkt aufzurufen und die zu verarbeitende Datei zu übergeben.

  1. Führen Sie im Workflow-Designer diese allgemeinen Schritte aus, um einen Event Grid-Auslöser namens Beim Auftreten eines Ressourcenereignisses hinzuzufügen.

  2. Wählen Sie im Feld mit den Verbindungsinformationen den zu verwendenden Authentifizierungstyp und dann Anmelden aus.

  3. Geben Sie im Triggerfeld die folgenden Informationen an:

    Eigenschaft Wert Beschreibung
    Ressourcentyp Microsoft.Storage.StorageAccounts Der Typ der Ressource, die die Ereignisse ausgibt.
    Abonnement Ihr Abonnementname Das Abonnement für das Speicherkonto.
    Ressourcenname Name Ihres Speicherkontos Der Name des Speicherkontos, in dem die Dateien generiert werden.
    Ereignistypelement Microsoft.Storage.BlobCreated Der Ereignistyp.
  4. Wählen Sie in der Liste Erweiterte Parameter die Option Präfixfilter aus, und geben Sie den folgenden Wert an:

    /blobServices/default/containers/<Containername>/blobs/<Pfad-zum-Datenordner>

    Wichtig

    Durch die Eigenschaft Präfixfilter hat Event Grid die Möglichkeit, den Workflow nur dann zu benachrichtigen, wenn in dem von uns angegebenen Pfad ein Blob erstellt wird. In diesem Fall gehen wir davon aus, dass Dateien von einem externen Prozess in dem Ordner erstellt werden, der unter <Pfad-zum-Datenordner> angegeben ist und sich innerhalb des Containers <Containername> befindet, der sich wiederum im ausgewählten Speicherkonto befindet. 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 Informationen dazu finden Sie unter Ereignisfilterung für Event Grid.

    Das folgende Beispiel zeigt, wie der Auslöser angezeigt wird:

    Screenshot: Auslöseraktivität der Logik-App.

Konfigurieren der Aktionen

  1. Führen Sie unter dem Auslöser Beim Auftreten eines Ressourcenereignissesdiese allgemeinen Schritte aus, um die HTTP-Aktion hinzuzufügen. Benennen Sie die Aktion in Autorisieren um.

  2. Geben Sie für die Aktion Autorisieren die folgenden Informationen an:

    Eigenschaft Wert Notizen
    Methode POST Die HTTP-Methode
    URI concat('https://login.microsoftonline.com/', parameters('tenant_id'), '/oauth2/token') Um diesen Ausdruck einzugeben, wählen Sie den Bereich im Feld URI aus. Wählen Sie in den angezeigten Optionen den Ausdruckseditor (Formelsymbol) aus.
    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') Um diesen Ausdruck einzugeben, wählen Sie den Bereich im Feld Text aus. Wählen Sie in den angezeigten Optionen den Ausdruckseditor (Formelsymbol) aus.

    Das folgende Beispiel zeigt eine Beispielaktion Autorisieren:

    Screenshot: Beispielaktion „Autorisieren“ im Logik-App-Workflow.

  3. Fügen Sie unter der Aktion Autorisieren eine weitere HTTP-Aktion hinzu, und benennen Sie den Titel in Aufrufen um.

  4. Geben Sie für die Aktion Aufrufen die folgenden Informationen an:

    Eigenschaft Wert Notizen
    Methode POST Die HTTP-Methode
    URI endpoint_uri Wählen Sie den Bereich im Feld URI aus, und wählen Sie dann unter Parameter die Option endpoint_uri aus.
    Headers Content-Type mit Wert application/json
    Headers Authorization mit Wert concat('Bearer ', body('Authorize')['access_token']) Um diesen Ausdruck einzugeben, wählen Sie den Bereich im Feld Kopfzeilen aus. Wählen Sie in den angezeigten Optionen den Ausdruckseditor (Formelsymbol) aus.
  5. Wählen Sie den Bereich im Feld Text aus, und wählen Sie in den angezeigten Optionen den Ausdruckseditor (Formelsymbol) aus, 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 Payload entspricht einer Modellimplementierung. Wenn Sie mit einer Pipelinekomponentenbereitstellung arbeiten, passen Sie das Format entsprechend an die Erwartungen der Eingaben für die Pipeline an. Weitere Informationen zum Strukturieren der Eingabe in REST-Aufrufen finden Sie unter Erstellen von Aufträgen und Eingabedaten für Batchendpunkte (REST).

    Das folgende Beispiel zeigt eine Beispielaktion Aufrufen:

    Screenshot: Beispielaktion „Aufrufen“ im Logik-App-Workflow.

    Hinweis

    Die Aktion Aufrufen löst den Batchauftrag aus, die Aktion wartet jedoch nicht auf den Abschluss. Azure Logic Apps ist standardmäßig nicht für zeitintensive Anwendungen eingerichtet. Wenn Sie auf den Abschluss des Auftrags warten müssen, empfiehlt es sich, zu Ausführen von Batchendpunkten über Azure Data Factory zu wechseln.

  6. Wenn Sie fertig sind, speichern Sie Ihren Workflow.

    Der Logik-App-Workflow ist für die Ausführung bereit und wird jedes Mal automatisch ausgelöst, wenn eine neue Datei im angegebenen Pfad erstellt wird.

  7. Um zu bestätigen, dass die App ein Ereignis erfolgreich empfangen hat, überprüfen Sie den Ausführungsverlauf der App:

    Screenshot: Ausführungsverlauf für den Logik-App-Workflow.

Nächste Schritte