Freigeben über


Schnellstart: Reagieren auf Blob-Speicherereignisse mithilfe von Azure Functions

In dieser Schnellstartanleitung verwenden Sie Visual Studio Code, um eine App zu erstellen, die auf Ereignisse in einem Blob Storage-Container reagiert. Nachdem Sie den Code lokal mithilfe eines Emulators getestet haben, stellen Sie ihn in einer neuen serverlosen Funktions-App bereit, die in einem Flex-Verbrauchsplan in Azure Functions ausgeführt wird.

Das Projekt verwendet die Azure Developer CLI (azd)-Erweiterung mit Visual Studio Code, um das Initialisieren und Überprüfen des Projektcodes lokal zu vereinfachen und Ihren Code in Azure bereitzustellen. Diese Bereitstellung folgt den aktuellen bewährten Methoden für sichere und skalierbare Azure Functions-Bereitstellungen.

Dieser Artikel unterstützt Version 4 des Node.js Programmiermodells für Azure Functions.

Dieser Artikel unterstützt Version 2 des Python-Programmiermodells für Azure Functions.

Voraussetzungen

  • Ein Azure-Konto mit einem aktiven Abonnement. Kostenlos ein Konto erstellen.

  • Visual Studio Code auf einer der unterstützten Plattformen

  • Azure Functions-Erweiterung für Visual Studio Code Diese Erweiterung erfordert Azure Functions Core Tools. Wenn dieses Tool nicht lokal verfügbar ist, versucht die Erweiterung, es mithilfe eines paketbasierten Installers zu installieren. Sie können das Core Tools-Paket auch installieren oder aktualisieren, indem Sie es über die Befehlspalette ausführen Azure Functions: Install or Update Azure Functions Core Tools . Wenn npm oder Homebrew nicht auf Ihrem lokalen Computer installiert ist, müssen Sie stattdessen Core Tools manuell installieren oder aktualisieren.

Initialisieren des Projekts

Verwenden Sie den azd init Befehl aus der Befehlspalette, um ein lokales Azure Functions-Codeprojekt aus einer Vorlage zu erstellen.

  1. Öffnen Sie in Visual Studio Code einen Ordner oder Arbeitsbereich, in dem Sie Ihr Projekt erstellen möchten.

  2. Drücken Sie F1, um die Befehlspalette zu öffnen, suchen und führen Sie den Befehl Azure Developer CLI (azd): Initialize App (init) aus, und wählen Sie dann Vorlage auswählen aus.

    Es kann eine geringfügige Verzögerung geben, während azd der aktuelle Ordner oder der aktuelle Arbeitsbereich initialisiert wird.

  1. Wenn Sie dazu aufgefordert werden, wählen Sie eine Vorlage aus, und suchen Sie nach und wählen Sie Azure Functions C# Event Grid Blob Trigger using Azure Developer CLI aus.

  2. Wenn Sie im Terminal dazu aufgefordert werden, geben Sie einen eindeutigen Umgebungsnamen ein, z. B. blobevents-dotnet.

    Mit diesem Befehl werden die Projektdateien aus dem Vorlagen-Repository abgerufen und das Projekt im aktuellen Ordner oder Arbeitsbereich initialisiert.

  1. Wenn Sie dazu aufgefordert werden, wählen Sie eine Vorlage aus, und suchen Sie nach und wählen Sie Azure Functions Python Event Grid Blob Trigger using Azure Developer CLI aus.

  2. Wenn Sie im Terminal dazu aufgefordert werden, geben Sie einen eindeutigen Umgebungsnamen ein, z. B. blobevents-python.

    Mit diesem Befehl werden die Projektdateien aus dem Vorlagen-Repository abgerufen und das Projekt im aktuellen Ordner oder Arbeitsbereich initialisiert.

  1. Wenn Sie dazu aufgefordert werden, wählen Sie eine Vorlage aus, und suchen Sie nach und wählen Sie Azure Functions TypeScript Event Grid Blob Trigger using Azure Developer CLI aus.

  2. Wenn Sie dazu aufgefordert werden, geben Sie einen eindeutigen Umgebungsnamen ein, z. B. blobevents-typescript.

    Mit diesem Befehl werden die Projektdateien aus dem Vorlagen-Repository abgerufen und das Projekt im aktuellen Ordner oder Arbeitsbereich initialisiert.

  1. Wenn Sie dazu aufgefordert werden, wählen Sie eine Vorlage aus, und suchen Sie nach und wählen Sie Azure Functions Java Event Grid Blob Trigger using Azure Developer CLI aus.

  2. Wenn Sie dazu aufgefordert werden, geben Sie einen eindeutigen Umgebungsnamen ein, z. B. blobevents-java.

    Mit diesem Befehl werden die Projektdateien aus dem Vorlagen-Repository abgerufen und das Projekt im aktuellen Ordner oder Arbeitsbereich initialisiert.

  1. Wenn Sie dazu aufgefordert werden, wählen Sie eine Vorlage aus, und suchen Sie nach und wählen Sie Azure Functions PowerShell Event Grid Blob Trigger using Azure Developer CLI aus.

  2. Wenn Sie dazu aufgefordert werden, geben Sie einen eindeutigen Umgebungsnamen ein, z. B. blobevents-powershell.

    Mit diesem Befehl werden die Projektdateien aus dem Vorlagen-Repository abgerufen und das Projekt im aktuellen Ordner oder Arbeitsbereich initialisiert.

In azdder Umgebung wird ein eindeutiger Bereitstellungskontext für Ihre App verwaltet, und Sie können mehrere definieren. Sie ist auch Teil des Namens der Ressourcengruppe, die Sie in Azure erstellen.

Hinzufügen der local.settings.json Datei

Funktionen benötigen die local.settings.json Datei, um den Host bei der lokalen Ausführung zu konfigurieren.

  1. Führen Sie diesen Befehl aus, um zum src App-Ordner zu wechseln:

    cd src
    
  1. Erstellen Sie eine Datei mit dem Namen local.settings.json im Ordner, der src diese JSON-Daten enthält:

    {
        "IsEncrypted": false,
        "Values": {
            "AzureWebJobsStorage": "UseDevelopmentStorage=true",
            "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
            "PDFProcessorSTORAGE": "UseDevelopmentStorage=true"
        }
    }
    
  1. Erstellen Sie eine Datei mit dem Namen local.settings.json im Ordner, der src diese JSON-Daten enthält:

    {
        "IsEncrypted": false,
        "Values": {
            "AzureWebJobsStorage": "UseDevelopmentStorage=true",
            "FUNCTIONS_WORKER_RUNTIME": "java",
            "PDFProcessorSTORAGE": "UseDevelopmentStorage=true"
        }
    }
    
  1. Erstellen Sie eine Datei mit dem Namen local.settings.json im Ordner, der src diese JSON-Daten enthält:

    {
        "IsEncrypted": false,
        "Values": {
            "AzureWebJobsStorage": "UseDevelopmentStorage=true",
            "FUNCTIONS_WORKER_RUNTIME": "node",
            "PDFProcessorSTORAGE": "UseDevelopmentStorage=true"
        }
    }
    
  1. Erstellen Sie eine Datei mit dem Namen local.settings.json im Ordner, der src diese JSON-Daten enthält:

    {
        "IsEncrypted": false,
        "Values": {
            "AzureWebJobsStorage": "UseDevelopmentStorage=true",
            "FUNCTIONS_WORKER_RUNTIME": "powershell",
            "FUNCTIONS_WORKER_RUNTIME_VERSION": "7.2",
            "PDFProcessorSTORAGE": "UseDevelopmentStorage=true"
        }
    }
    
  1. Erstellen Sie eine Datei mit dem Namen local.settings.json im Ordner, der src diese JSON-Daten enthält:

    {
        "IsEncrypted": false,
        "Values": {
            "AzureWebJobsStorage": "UseDevelopmentStorage=true",
            "FUNCTIONS_WORKER_RUNTIME": "python",
            "PDFProcessorSTORAGE": "UseDevelopmentStorage=true"
        }
    }
    

Erstellen und Aktivieren einer virtuellen Umgebung

Führen Sie im src Ordner die folgenden Befehle aus, um eine virtuelle Umgebung namens " .venvzu erstellen und zu aktivieren:

python3 -m venv .venv
source .venv/bin/activate

Wenn Python das venv-Paket nicht in Ihrer Linux-Verteilung installiert, führen Sie den folgenden Befehl aus:

sudo apt-get install python3-venv

Einrichten des lokalen Speicher-Emulators

Verwenden Sie den Azurite-Emulator, um Ihr Codeprojekt lokal auszuführen, bevor Sie Azure-Ressourcen erstellen und verwenden.

  1. Falls noch nicht geschehen, installieren Sie Azurite.

  2. Drücken Sie F1. Suchen Sie in der Befehlspalette nach dem Befehl, und führen Sie den Befehl Azurite: Start aus, um den lokalen Speicher-Emulator zu starten.

  3. Erweitern Sie im Azure-Bereich den Arbeitsbereich>angefügte Speicherkonten>lokalen Emulator, klicken Sie mit der rechten Maustaste auf Blob-Container (Ctrl-Klick auf einem Mac), wählen Sie Blobcontainer erstellen... und erstellen Sie diese beiden BLOB-Speichercontainer im lokalen Emulator:

    • unprocessed-pdf: Container, der vom Trigger auf Speicherereignisse überwacht wird.
    • processed-pdf: Container, in dem die Funktion verarbeitete BLOBs als Ausgabe sendet.
  4. Erweitern Sie Blob Containers, klicken Sie mit der rechten Maustaste (oder Ctrl-Klick auf Mac) auf unprocessed-pdf, wählen Sie Dateien hochladen... aus, drücken Sie Enter, um das Stammverzeichnis zu akzeptieren, und laden Sie die PDF-Dateien aus dem data Projektordner hoch.

Beim lokalen Ausführen können Sie REST zum Auslösen der Funktion verwenden, indem sie simulieren, dass die Funktion eine Nachricht von einem Ereignisabonnement empfängt.

Lokales Ausführen der Funktion

Visual Studio Code ist in Azure Functions Core-Tools integriert, damit Sie dieses Projekt mithilfe des Azurite-Emulators auf Ihrem lokalen Entwicklungscomputer ausführen können. Die PDFProcessorSTORAGE-Umgebungsvariable definiert die Speicherkontoverbindung, die auch in der Datei „local.settings.json“ auf "UseDevelopmentStorage=true" festgelegt ist, wenn sie lokal ausgeführt wird.

  1. Führen Sie diesen Befehl aus dem src Projektordner in einem Terminal oder einer Eingabeaufforderung aus:

    func start
    
    mvn clean package
    mvn azure-functions:run
    
    npm install
    func start  
    
    npm install
    npm start  
    

    Wenn der Funktionenhost gestartet wird, schreibt er den Namen des Triggers und den Triggertyp in die Terminalausgabe. In Functions enthält der Projektstammordner die host.json Datei.

  2. Mit den Core Tools, die noch im Terminal laufen, öffnen Sie die test.http Datei in Ihrem Projekt und wählen Sie "Anforderung senden" aus, um die ProcessBlobUpload Funktion auszulösen, indem Sie ein Blob-Testereignis an den Blob-Ereigniswebhook senden.

    Dieser Schritt simuliert den Empfang eines Ereignisses aus einem Ereignisabonnement, wenn es lokal ausgeführt wird, und Sie sollten die in den Protokollen geschriebenen Anforderungs- und verarbeiteten Dateiinformationen sehen. Wenn Sie keinen REST-Client verwenden, müssen Sie ein weiteres sicheres REST-Tool verwenden, um den Endpunkt mit der Nutzlast in test.httpaufzurufen.

  3. Erweitern Sie im Arbeitsbereich für den BLOB-Container den Abschnitt processed-pdf und überprüfen Sie, ob die Funktion die PDF-Datei verarbeitet und mit einem -Präfix kopiert hat.

  4. Wenn Sie fertig sind, drücken Sie STRG+C im Terminalfenster, um den func.exe-Hostprozess zu beenden.

Überprüfen des Codes (optional)

Sie können den Code überprüfen, der den Ereignisraster-Blobtrigger in der ProcessBlobUpload.cs Projektdatei definiert. Die Funktion veranschaulicht Folgendes:

  • Verwenden Sie BlobTrigger mit Source = BlobTriggerSource.EventGrid zur nahezu Echtzeitverarbeitung.
  • An BlobClient für das Quell-BLOB und an BlobContainerClient für das Ziel binden.
  • Verarbeiten von BLOB-Inhalten und Kopieren in einen anderen Container mithilfe von Streams

Sie können den Code überprüfen, der den Ereignisraster-Blobtrigger in der function_app.py Projektdatei definiert. Die Funktion veranschaulicht Folgendes:

  • Verwenden Sie @app.blob_trigger mit source="EventGrid" zur nahezu Echtzeitverarbeitung.
  • Zugreifen auf BLOB-Inhalte mithilfe des InputStream Parameters
  • Kopieren von verarbeiteten Dateien in den Zielcontainer mithilfe des Azure Storage SDK

Sie können den Code überprüfen, der den Ereignisraster-Blobtrigger in der processBlobUpload.ts Projektdatei definiert. Die Funktion veranschaulicht Folgendes:

  • Verwenden Sie app.storageBlob() mit source: 'EventGrid' zur nahezu Echtzeitverarbeitung.
  • Zugreifen auf BLOB-Inhalte mithilfe des Node.js Azure Storage SDK
  • Dateien asynchron verarbeiten und in den Zielcontainer kopieren

Sie können den Code überprüfen, der den Ereignisraster-BLOB-Trigger in der ProcessBlobUpload.java Projektdatei definiert. Die Funktion veranschaulicht Folgendes:

  • Verwenden Sie @BlobTrigger mit source = "EventGrid" zur nahezu Echtzeitverarbeitung.
  • Zugreifen auf BLOB-Inhalte mithilfe des BlobInputStream Parameters
  • Kopieren verarbeiteter Dateien in den Zielcontainer mithilfe des Azure Storage SDK für Java

Sie können den Code überprüfen, der den Ereignisraster-Blobtrigger in der ProcessBlobUpload/run.ps1 Projektdatei und der entsprechenden function.jsondefiniert. Die Funktion veranschaulicht Folgendes:

  • Konfigurieren des Blob-Trigger mit "source": "EventGrid" in function.json für die Nahezu-Echtzeit-Verarbeitung
  • Zugreifen auf BLOB-Inhalte mit PowerShell Azure Storage-Cmdlets
  • Verarbeiten und Kopieren von Dateien in den Zielcontainer mithilfe von Azure PowerShell-Modulen

Nachdem Sie den Funktionscode lokal überprüft und verifiziert haben, ist es an der Zeit, das Projekt in Azure zu veröffentlichen.

Erstellen von Azure-Ressourcen und Bereitstellen

Verwenden Sie den azd up Befehl, um die Funktions-App in einem Flex-Verbrauchsplan zusammen mit anderen erforderlichen Azure-Ressourcen zu erstellen, einschließlich des Ereignisabonnements. Nachdem die Infrastruktur fertig ist, stellt azd auch Ihren Projektcode in der neuen Function App in Azure bereit.

  1. Drücken Sie in Visual Studio Code F1, um die Befehlspalette zu öffnen. Suchen Sie nach dem Befehl, und führen Sie den Befehl Azure Developer CLI (azd): Sign In with Azure Developer CLIaus, und melden Sie sich dann mit Ihrem Azure-Konto an.

  2. Drücken Sie im Projektstamm F1 , um die Befehlspalette zu öffnen. Suchen Sie nach dem Befehl, und führen Sie den Befehl Azure Developer CLI (azd): Provision and Deploy (up) aus, um die erforderlichen Azure-Ressourcen zu erstellen und Ihren Code bereitzustellen.

  3. Wenn Sie im Terminalfenster aufgefordert werden, geben Sie die folgenden erforderlichen Bereitstellungsparameter an:

    Prompt Description
    Wählen Sie ein Azure-Abonnement aus, das Sie verwenden möchten. Wählen Sie das Abonnement aus, in dem Sie Ihre Ressourcen erstellen möchten.
    Umgebungsname Eine Umgebung, die dazu dient, einen eindeutigen Bereitstellungskontext für Ihre Anwendung zu erhalten.
    Azure-Standort Die Azure-Region, in der die Ressourcengruppe erstellt werden soll, die die neuen Azure-Ressourcen enthält. Es werden nur Regionen angezeigt, die den Flex-Verbrauchsplan derzeit unterstützen.

    Der azd up Befehl verwendet Ihre Antworten auf diese Eingabeaufforderungen mit den Bicep-Konfigurationsdateien, um diese erforderlichen Azure-Ressourcen zu erstellen und zu konfigurieren, und zwar nach den neuesten bewährten Methoden:

    • Flex-Verbrauchsplan und Funktions-App
    • Azure Storage-Konto mit BLOB-Containern
    • Application Insights (empfohlen)
    • Zugriffsrichtlinien und -rollen für Ihr Konto
    • Event Grid-Abonnement für Blob-Ereignisse
    • Dienst-zu-Dienst-Verbindungen mithilfe von verwalteten Identitäten (anstelle gespeicherter Verbindungszeichenfolgen)

    Nachdem der Befehl erfolgreich abgeschlossen wurde, wird Ihre App in Azure mit einem Ereignisabonnement ausgeführt, das so konfiguriert ist, dass Ihre Funktion ausgelöst wird, wenn Blobs dem unprocessed-pdf Container hinzugefügt werden.

  4. Notieren Sie sich AZURE_STORAGE_ACCOUNT_NAME und AZURE_FUNCTION_APP_NAME in der Ausgabe. Diese Namen sind für Ihr Speicherkonto bzw. Ihre Funktions-App in Azure eindeutig.

Überprüfen der bereitgestellten Funktion

  1. Drücken Sie in Visual Studio Code F1. Suchen Sie in der Befehlspalette nach dem Befehl, und führen Sie den Befehl Azure Storage: Upload Files...aus. Übernehmen Sie das Stammverzeichnis, und laden Sie wie zuvor eine oder mehrere PDF-Dateien aus dem data Projektordner hoch.

  2. Wenn Sie dazu aufgefordert werden, wählen Sie den Namen Ihres neuen Speicherkontos (von AZURE_STORAGE_ACCOUNT_NAME). Wählen Sie Blob Containers>unprocessed-pdf.

  3. Drücken Sie F1. Suchen Sie in der Befehlspalette nach dem Befehl, und führen Sie den Befehl Azure Storage: Open in Exploreraus. Wählen Sie dasselbe Speicherkonto >Blob-Container>processed-pdf aus und öffnen Sie es dann in einem neuen Fenster.

  4. Überprüfen Sie im Explorer, ob die hochgeladenen PDF-Dateien von Ihrer Funktion verarbeitet wurden. Die Ausgabe wird in den processed-pdf Container mit einem processed- Präfix geschrieben.

Der Ereignisraster-Blobtrigger verarbeitet Dateien innerhalb von Sekunden nach dem Hochladen. Diese Geschwindigkeit veranschaulicht die Funktionen in Quasi-Echtzeit dieses Ansatzes im Vergleich zu herkömmlichen abrufbasierten Blobtriggern.

Erneutes Bereitstellen Ihres Codes

Führen Sie den azd up Befehl so oft aus, wie Sie ihre Azure-Ressourcen bereitstellen und Codeupdates für Ihre Funktions-App bereitstellen müssen.

Hinweis

Bereitgestellte Codedateien werden immer vom neuesten Bereitstellungspaket überschrieben.

Ihre anfänglichen Antworten auf azd-Eingabeaufforderungen und alle von Ihnen generierten azd-Umgebungsvariablen werden lokal in Ihrer benannten Umgebung gespeichert. Verwenden Sie den azd env get-values-Befehl, um alle Variablen in Ihrer Umgebung zu überprüfen, die beim Erstellen von Azure-Ressourcen verwendet wurden.

Bereinigen von Ressourcen

Wenn Sie mit der Arbeit mit Ihrer Funktions-App und verwandten Ressourcen fertig sind, verwenden Sie diesen Befehl, um die Funktions-App und die zugehörigen Ressourcen aus Azure zu löschen. Diese Aktion hilft Ihnen, weitere Kosten zu vermeiden:

azd down --no-prompt

Hinweis

Die --no-prompt-Option weist azd an, Ihre Ressourcengruppe ohne Bestätigung von Ihnen zu löschen.

Dieser Befehl wirkt sich nicht auf Ihr lokales Codeprojekt aus.