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
- Ein Azure-Konto mit einem aktiven Abonnement. Sie können kostenlos ein Konto erstellen.
- Ein Azure Batch-Konto und ein verknüpftes Azure Storage-Konto. Weitere Informationen zum Erstellen und Verknüpfen von Konten finden Sie unter Erstellen eines Batch-Kontos.
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
Melden Sie sich mit Ihren Azure-Anmeldeinformationen beim Azure-Portal an.
Erstellen Sie einen Pool, indem Sie im linken Navigationsbereich Pools und anschließend die Schaltfläche Hinzufügen über dem Suchformular auswählen.
- Geben Sie eine Pool-ID ein. In diesem Beispiel wird der Pool mit dem Namen
ocr-pool
bezeichnet. - Wählen Sie Kanonisch als Herausgeber aus.
- Wählen Sie 0001-com-ubuntu-server-jammy als Angebot aus.
- Wählen Sie 22_04-lts als SKU aus.
- Wählen Sie
Standard_F2s_v2 - 2 vCPUs, 2 GB Memory
als VM-Größe im Abschnitt Knotengröße aus. - Legen Sie den Modus im Abschnitt Skalierung auf Fixiert fest, und geben Sie 3 für Ziel für dedizierte Knoten ein.
- 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 mitsudo
enthalten können. - Klicken Sie auf OK.
- Geben Sie eine Pool-ID ein. In diesem Beispiel wird der Pool mit dem Namen
Erstellen eines Auftrags
- 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.
- Geben Sie eine Auftrags-ID ein. In diesem Beispiel wird
ocr-job
verwendet. - Wählen Sie
ocr-pool
bzw. den ausgewählten Namen des Pools für Aktueller Pool aus. - Klicken Sie auf OK.
- Geben Sie eine Auftrags-ID ein. In diesem Beispiel wird
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.
Suchen Sie im Azure-Portal nach Speicherkonten, und wählen Sie diese Option aus.
Wählen Sie Ihr Speicherkonto aus, das mit Ihrem Batch-Konto verknüpft ist.
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).
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.
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.
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.
Führen Sie zum Erstellen der Funktion die Schritte unter Erstellen einer Funktion, die durch Azure Blob Storage ausgelöst wird aus.
- Wählen Sie „.NET“ für Runtimestapel aus. Diese Beispielfunktion verwendet C#, damit das Batch .NET SDK genutzt werden kann.
- Verwenden Sie auf der Seite Speicher dasselbe Speicherkonto, das Sie mit Ihrem Batch-Konto verknüpft haben.
- Wählen Sie Überprüfen und erstellen > Erstellen aus.
Der folgende Screenshot veranschaulicht die Seite Funktions-App erstellen auf der Registerkarte Grundlagen mit Beispielinformationen.
Wählen Sie in Ihrer Funktion im linken Navigationsbereich Funktionen aus, und wählen Sie Erstellen aus.
Wählen Sie im Bereich Funktion erstellen den Azure Blob Storage-Trigger aus.
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.Klicken Sie auf Erstellen.
Wählen Sie nach dem Erstellen der per Blob ausgelösten Funktion Programmieren und testen aus. Verwenden Sie in der Funktion
run.csx
undfunction.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.
-
Ändern Sie die Platzhalterwerte der Variablen in der
Run()
-Funktion in der Dateirun.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.
- Wählen Sie auf der Seite Programmieren und testen die Option Testen/Ausführen aus.
- Geben Sie auf der Registerkarte Eingabe den Pfad für Ihren Eingabecontainer in Text ein.
- 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:
- Wählen Sie auf der Seite Pools Ihres Batch-Kontos weitere Optionen für Ihren Pool aus.
- 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.