Tutorial: Auslösen eines Batch-Auftrags mithilfe von Azure Functions

In diesem Tutorial erfahren Sie, wie Sie mithilfe von Azure Functions einen Batchauftrag auslösen. In diesem Artikel wird ein Beispiel beschrieben, in dem Dokumente verwendet werden, die einem Azure Storage-Blobcontainer hinzugefügt wurden und auf die die Erkennung von optischen Zeichen (OCR) mithilfe von Azure Batch angewendet wird. Zur Optimierung der OCR-Verarbeitung wird in diesem Beispiel eine Azure-Funktion konfiguriert, die bei jedem Hinzufügen einer Datei zum Blobcontainer einen Batch-OCR-Auftrag ausführt. Sie lernen Folgendes:

  • Verwenden Sie das Azure-Portal, um Pools und Aufträge zu erstellen.
  • Erstellen von Blobcontainern und einer SAS (Shared Access Signature).
  • Erstellen einer per Blob ausgelösten Azure-Funktion.
  • Hochladen von Eingabedateien in Storage.
  • Überwachen der Aufgabenausführung
  • Abrufen von Ausgabedateien.

Voraussetzungen

Anmelden bei Azure

Melden Sie sich beim Azure-Portal an.

Erstellen eines Batch-Pools und eines Batch-Auftrags mit dem Azure-Portal

In diesem Abschnitt erstellen Sie mit dem Azure-Portal den Batch-Pool und den Batch-Auftrag, über den OCR-Tasks ausgeführt werden.

Erstellen eines Pools

  1. Melden Sie sich mit Ihren Azure-Anmeldeinformationen beim Azure-Portal an.

  2. Erstellen Sie einen Pool, indem Sie im linken Navigationsbereich Pools und anschließend die Schaltfläche Hinzufügen über dem Suchformular auswählen.

    Screenshot der Seite „Pools“ in einem Batch-Konto mit hervorgehobener Schaltfläche „Hinzufügen“.

    1. Geben Sie eine Pool-ID ein. In diesem Beispiel wird der Pool mit dem Namen ocr-pool bezeichnet.
    2. Wählen Sie Kanonisch als Herausgeber aus.
    3. Wählen Sie 0001-com-ubuntu-server-jammy als Angebot aus.
    4. Wählen Sie 22_04-lts als SKU aus.
    5. Wählen Sie Standard_F2s_v2 - 2 vCPUs, 2 GB Memory als VM-Größe im Abschnitt Knotengröße aus.
    6. Legen Sie den Modus im Abschnitt Skalierung auf Fixiert fest, und geben Sie 3 für Ziel für dedizierte Knoten ein.
    7. Legen Sie Starttask auf Aktiviert fest, und geben Sie den Befehl /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" an der Befehlszeile ein. Legen Sie die Höhenebene auf autouser, admin für den Pool fest, damit Starttasks Befehle mit sudo enthalten können.
    8. Klicken Sie auf OK.

Erstellen eines Auftrags

  1. Erstellen Sie einen Auftrag im Pool, indem Sie im linken Navigationsbereich Aufträge und anschließend die Schaltfläche Hinzufügen über dem Suchformular auswählen.
    1. Geben Sie eine Auftrags-ID ein. In diesem Beispiel wird ocr-job verwendet.
    2. Wählen Sie ocr-pool bzw. den ausgewählten Namen des Pools für Aktueller Pool aus.
    3. Klicken Sie auf OK.

Erstellen von Blobcontainern

Hier erstellen Sie Blobcontainer, in denen die Eingabe- und Ausgabedateien für den OCR-Batch-Auftrag gespeichert werden. In diesem Beispiel hat der Eingabecontainer den Namen input und ist der Speicherort, in den alle Dokumente ohne OCR zunächst zur Verarbeitung hochgeladen werden. In den Ausgabecontainer mit dem Namen output schreibt der Batch-Auftrag die mit OCR verarbeiteten Dokumente.

  1. Suchen Sie im Azure-Portal nach Speicherkonten, und wählen Sie diese Option aus.

  2. Wählen Sie Ihr Speicherkonto aus, das mit Ihrem Batch-Konto verknüpft ist.

  3. Wählen Sie im linken Navigationsbereich Container aus, und erstellen Sie anhand der Schritte unter Erstellen eines Blobcontainers zwei Blobcontainer (einen für Eingabedateien und einen für Ausgabedateien).

  4. Erstellen Sie eine Shared Access Signature für Ihren Ausgabecontainer, indem Sie den Ausgabecontainer auswählen und auf der Seite Freigegebene Zugriffstoken im Dropdownmenü Berechtigungen die Option Schreiben auswählen. Es sind keine weiteren Berechtigungen erforderlich.

  5. Wählen Sie SAS-Token und -URL generieren aus, und kopieren Sie die Blob-SAS-URL, um sie später für Ihre Funktion zu verwenden.

    Screenshot der Seite „Freigegebene Zugriffstoken“ mit hervorgehobenem Dropdownmenü „Berechtigungen“ und der Schaltfläche „SAS-Token und -URL generieren“.

Erstellen einer Azure Function

In diesem Abschnitt erstellen Sie die Azure-Funktion, die den OCR-Batch-Auftrag auslöst, wenn eine Datei in den Eingabecontainer hochgeladen wird.

  1. Führen Sie zum Erstellen der Funktion die Schritte unter Erstellen einer Funktion, die durch Azure Blob Storage ausgelöst wird aus.

    1. Wählen Sie „.NET“ für Runtimestapel aus. Diese Beispielfunktion verwendet C#, damit das Batch .NET SDK genutzt werden kann.
    2. Verwenden Sie auf der Seite Speicher dasselbe Speicherkonto, das Sie mit Ihrem Batch-Konto verknüpft haben.
    3. Wählen Sie Überprüfen und erstellen > Erstellen aus.

    Der folgende Screenshot veranschaulicht die Seite Funktions-App erstellen auf der Registerkarte Grundlagen mit Beispielinformationen.

    Screenshot der Seite „Funktions-App erstellen“ auf der Registerkarte „Grundlagen“ mit Beispielinformationen.

  2. Wählen Sie in Ihrer Funktion im linken Navigationsbereich Funktionen aus, und wählen Sie Erstellen aus.

  3. Wählen Sie im Bereich Funktion erstellen den Azure Blob Storage-Trigger aus.

  4. Geben Sie einen Namen für Ihre Funktion in Neue Funktion ein. In diesem Beispiel lautet der Name „OcrTrigger“. Geben Sie den Pfad als input/{name} ein, wobei „input“ der Name Ihres Blobcontainers ist.

  5. Klicken Sie auf Erstellen.

    Screenshot des Bereichs „Funktion erstellen“, in dem die Option „Azure Blob Storage-Trigger“ sowie die Felder „Neue Funktion“ und „Pfad“ hervorgehoben sind.

  6. Wählen Sie nach dem Erstellen der per Blob ausgelösten Funktion Programmieren und testen aus. Verwenden Sie in der Funktion run.csx und function.proj von GitHub. function.proj ist standardmäßig nicht vorhanden. Wählen Sie daher die Schaltfläche Hochladen aus, um sie in Ihren Entwicklungsarbeitsbereich hochzuladen.

    • run.csx wird ausgeführt, wenn ein neues Blob im Eingabeblobcontainer hinzugefügt wird.
    • function.proj enthält die externen Bibliotheken im Funktionscode, z. B. das Batch .NET SDK.
  7. Ändern Sie die Platzhalterwerte der Variablen in der Run()-Funktion in der Datei run.csx entsprechend Ihren Batch- und Storage-Anmeldeinformationen. Die Anmeldeinformationen für Ihr Batch- und Speicherkonto finden Sie im Azure-Portal im Abschnitt Schlüssel des Batch- und Speicherkontos.

Auslösen der Funktion und Abrufen der Ergebnisse

Laden Sie beliebige gescannte Dateien aus dem Verzeichnis input_files in GitHub in Ihren Eingabecontainer hoch.

Sie können Ihre Funktion über das Azure-Portal auf der Seite Programmieren und testen Ihrer Funktion testen.

  1. Wählen Sie auf der Seite Programmieren und testen die Option Testen/Ausführen aus.
  2. Geben Sie auf der Registerkarte Eingabe den Pfad für Ihren Eingabecontainer in Text ein.
  3. Klicken Sie auf Run (Ausführen).

Nach wenigen Sekunden wird die Datei mit angewandter OCR im Ausgabecontainer hinzugefügt. Protokollinformationen werden im unteren Fenster ausgegeben. Die Datei ist dann sichtbar und kann über Storage-Explorer abgerufen werden.

Alternativ finden Sie die Protokollinformationen auf der Seite Überwachen:

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>...

Um die Ausgabedateien auf Ihren lokalen Computer herunterzuladen, wechseln Sie zum Ausgabecontainer in Ihrem Speicherkonto. Wählen Sie weitere Optionen für die gewünschte Datei aus, und wählen Sie dann Herunterladen aus.

Tipp

Die heruntergeladenen Dateien können durchsucht werden, wenn sie in einem PDF-Reader geöffnet werden.

Bereinigen von Ressourcen

Ihnen werden während der Ausführung der Knoten auch dann Gebühren für den Pool berechnet, wenn keine Aufträge geplant sind. Wenn Sie den Pool nicht mehr benötigen, löschen Sie ihn, indem Sie die folgenden Schritte ausführen:

  1. Wählen Sie auf der Seite Pools Ihres Batch-Kontos weitere Optionen für Ihren Pool aus.
  2. Klicken Sie auf Löschen.

Beim Löschen des Pools werden alle Aufgabenausgaben auf den Knoten gelöscht. Die Ausgabedateien verbleiben aber im Speicherkonto. Wenn Sie nicht mehr benötigt werden, können Sie auch das Batch-Konto und das Speicherkonto löschen.

Nächste Schritte

Weitere Beispiele zur Verwendung der .NET-API zum Planen und Verarbeiten von Batch-Workloads finden Sie in den Beispielen auf GitHub.