Freigeben über


Lernprogramm: Auslösen eines Batchauftrags mit Azure Functions

In diesem Lernprogramm erfahren Sie, wie Sie einen Batchauftrag mithilfe von Azure Functions auslösen. In diesem Artikel wird beispielhaft erläutert, wie Dokumente einem Azure Storage Blob-Container hinzugefügt und anschließend mithilfe von Azure Batch einer optischen Zeichenerkennung (OCR) unterzogen werden. Um die OCR-Verarbeitung zu optimieren, konfiguriert dieses Beispiel eine Azure-Funktion, die bei jedem Hinzufügen einer Datei zum BLOB-Container einen Batch-OCR-Auftrag ausführt. Hier erfahren Sie, wie Sie:

  • Verwenden Sie das Azure-Portal, um Pools und Aufträge zu erstellen.
  • Erstellen Sie Blob-Container und eine Shared Access Signature (SAS).
  • Erstellen Sie eine Blob-ausgelöste 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 Batchpools und eines Batchauftrags mithilfe des Azure-Portals

In diesem Abschnitt verwenden Sie das Azure-Portal, um den Batchpool- und Batchauftrag zu erstellen, der OCR-Aufgaben ausführt.

Erstellen eines Pools

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

  2. Erstellen Sie einen Pool, indem Sie "Pools " in der linken Navigationsleiste auswählen und dann die Schaltfläche "Hinzufügen " oberhalb des Suchformulars auswählen.

    Screenshot von der

    1. Geben Sie eine Pool-ID ein. In diesem Beispiel wird der Pool ocr-poolbenannt.
    2. Wählen Sie canonical als Publisher 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.
    6. Legen Sie den Modus im Abschnitt "Skalierung" auf "Fest" fest, und geben Sie "3" für die dedizierten Zielknoten ein.
    7. Legen Sie "Startaufgabe " auf "Startaufgabe 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" in die Befehlszeile ein. Legen Sie die Höhenebene auf autouser, admin für den Pool fest, damit Starttasks Befehle mit sudo enthalten können.
    8. Wählen Sie OK aus.

Einen Job erstellen

  1. Erstellen Sie einen Auftrag im Pool, indem Sie "Aufträge" in der linken Navigation auswählen und dann über dem Suchformular die Schaltfläche "Hinzufügen " auswählen.
    1. Geben Sie eine Auftrags-ID ein. In diesem Beispiel wird ocr-jobverwendet.
    2. Wählen Sie ocr-pool für den aktuellen Pool oder den Namen aus, den Sie für Ihren Pool ausgewählt haben.
    3. Wählen Sie OK aus.

BLOB-Container erstellen

Hier erstellen Sie BLOB-Container, die Ihre Eingabe- und Ausgabedateien für den OCR-Batchauftrag speichern. In diesem Beispiel wird der Eingabecontainer benannt input und ist der Ort, an dem alle Dokumente ohne OCR zunächst zur Verarbeitung hochgeladen werden. Der Ausgabecontainer wird benannt output und ist der Ort, an dem der Batchauftrag verarbeitete Dokumente mit OCR schreibt.

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

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

  3. Wählen Sie Container aus der linken Navigation aus, und erstellen Sie zwei BLOB-Container (eines für Eingabedateien, eine für Ausgabedateien), indem Sie die Schritte unter Erstellen eines BLOB-Containers ausführen.

  4. Erstellen Sie eine Freigegebene Zugriffssignatur für Ihren Ausgabecontainer, indem Sie den Ausgabecontainer auswählen, und wählen Sie auf der Seite "Freigegebene Zugriffstoken " die Option "Schreiben " in der Dropdownliste "Berechtigungen" aus. Es sind keine anderen Berechtigungen erforderlich.

  5. Wählen Sie "SAS-Token und URL generieren" aus, und kopieren Sie die BLOB-SAS-URL , die später für Ihre Funktion verwendet werden soll.

    Screenshot der Seite

Erstellen einer Azure Function

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

  1. Führen Sie die Schritte unter Erstellen einer Funktion aus, die von Azure Blob Storage ausgelöst wird , um eine Funktion zu erstellen.

    1. Wählen Sie für den Laufzeitstapel .NET aus. In dieser Beispielfunktion wird C# verwendet, um das Batch.NET SDK zu nutzen.
    2. Verwenden Sie auf der Seite " Speicher " dasselbe Speicherkonto, das Sie mit Ihrem Batchkonto verknüpft haben.
    3. Wählen Sie "Überprüfen" und "Erstellen" > aus.

    Der folgende Screenshot der Seite " Funktions-App erstellen " auf der Registerkarte " Grundlagen " mithilfe von Beispielinformationen.

    Screenshot der Seite

  2. Wählen Sie in Ihrer Funktion "Funktionen" in der linken Navigationsleiste 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. Wählen Sie "Erstellen" aus.

    Screenshot des Bereichs

  6. Nachdem die durch Blob ausgelöste Funktion erstellt wurde, wählen Sie Code + Test aus. Verwenden Sie die run.csx und function.proj von GitHub in der Funktion. 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 Ihrem Eingabe-BLOB-Container ein neues Blob hinzugefügt wird.
    • function.proj listet die externen Bibliotheken in Ihrem Funktionscode auf, z. B. das Batch.NET SDK.
  7. Ändern Sie die Platzhalterwerte der Variablen in der Run() Funktion der run.csx Datei, um Ihre Batch- und Speicheranmeldeinformationen widerzuspiegeln. Sie finden Ihre Anmeldeinformationen für Ihr Batch- und Ihr Speicherkonto im Azure-Portal im Abschnitt "Schlüssel" Ihres Batch- und Speicherkontos.

Auslösen der Funktion und Abrufen von Ergebnissen

Laden Sie alle gescannten Dateien aus dem input_files Verzeichnis auf GitHub in Ihren Eingabecontainer hoch.

Sie können Ihre Funktion über das Azure-Portal auf der Seite "Code + Test " Ihrer Funktion testen.

  1. Wählen Sie " Testen/Ausführen " auf der Seite "Code + Test " aus.
  2. Geben Sie den Pfad für Ihren Eingabecontainer im Textkörper auf der Registerkarte " Eingabe " ein.
  3. Klicken Sie auf Ausführen.

Nach ein paar Sekunden wird die Datei, auf die OCR angewendet wurde, dem Ausgabecontainer hinzugefügt. Protokollinformationen werden im unteren Fenster ausgegeben. Die Datei ist dann im Speicher-Explorer sichtbar und abrufbar.

Alternativ können Sie die Protokollinformationen auf der Seite "Monitor " finden:

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 und 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 mit den folgenden Schritten:

  1. Wählen Sie auf der Seite "Pools " Ihres Batchkontos weitere Optionen in Ihrem 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 wird, können Sie auch das Batchkonto und das Speicherkonto löschen.

Nächste Schritte

Weitere Beispiele für die Verwendung der .NET-API zum Planen und Verarbeiten von Batchworkloads finden Sie in den Beispielen auf GitHub.