Sdílet prostřednictvím


Rychlý průvodce: Reakce na události úložiště BLOB pomocí Azure Functions

V tomto rychlém startu pomocí editoru Visual Studio Code vytvoříte aplikaci, která reaguje na události v kontejneru Blob Storage. Po místním otestování kódu pomocí emulátoru ho nasadíte do nové aplikace funkcí bez serveru spuštěné v plánu Flex Consumption ve službě Azure Functions.

Projekt používá rozšíření Azure Developer CLI (azd) se sadou Visual Studio Code ke zjednodušení inicializace a ověřování kódu projektu místně a také k nasazení kódu do Azure. Toto nasazení se řídí aktuálními osvědčenými postupy pro zabezpečená a škálovatelná nasazení Azure Functions.

Tento článek podporuje verzi 4 programovacího modelu Node.js pro Azure Functions.

Tento článek podporuje verzi 2 programovacího modelu Pythonu pro Azure Functions.

Požadavky

  • Node.js 18.x nebo vyšší. Pomocí příkazu node --version zkontrolujte svou verzi.

Inicializace projektu

azd init Pomocí příkazu z palety příkazů vytvořte místní projekt kódu Azure Functions ze šablony.

  1. V editoru Visual Studio Code otevřete složku nebo pracovní prostor, ve kterém chcete vytvořit projekt.

  2. Stisknutím klávesy F1 otevřete paletu příkazů, vyhledejte a spusťte příkaz Azure Developer CLI (azd): Initialize App (init)a pak zvolte Vybrat šablonu.

    Při inicializaci aktuální složky nebo pracovního prostoru může dojít k mírnému zpoždění azd .

  1. Po zobrazení výzvy zvolte Vybrat šablonu a pak vyhledejte a vyberte Azure Functions C# Event Grid Blob Trigger using Azure Developer CLI.

  2. Po zobrazení výzvy v terminálu zadejte jedinečný název prostředí, například blobevents-dotnet.

    Tento příkaz načte soubory projektu z úložiště šablon a inicializuje projekt v aktuální složce nebo pracovním prostoru.

  1. Po zobrazení výzvy zvolte Vybrat šablonu a pak vyhledejte a vyberte Azure Functions Python Event Grid Blob Trigger using Azure Developer CLI.

  2. Po zobrazení výzvy v terminálu zadejte jedinečný název prostředí, například blobevents-python.

    Tento příkaz načte soubory projektu z úložiště šablon a inicializuje projekt v aktuální složce nebo pracovním prostoru.

  1. Po zobrazení výzvy zvolte Vybrat šablonu a pak vyhledejte a vyberte Azure Functions TypeScript Event Grid Blob Trigger using Azure Developer CLI.

  2. Po zobrazení výzvy zadejte jedinečný název prostředí, například blobevents-typescript.

    Tento příkaz načte soubory projektu z úložiště šablon a inicializuje projekt v aktuální složce nebo pracovním prostoru.

  1. Po zobrazení výzvy zvolte Vybrat šablonu a pak vyhledejte a vyberte Azure Functions Java Event Grid Blob Trigger using Azure Developer CLI.

  2. Po zobrazení výzvy zadejte jedinečný název prostředí, například blobevents-java.

    Tento příkaz načte soubory projektu z úložiště šablon a inicializuje projekt v aktuální složce nebo pracovním prostoru.

  1. Po zobrazení výzvy zvolte Vybrat šablonu a pak vyhledejte a vyberte Azure Functions PowerShell Event Grid Blob Trigger using Azure Developer CLI.

  2. Po zobrazení výzvy zadejte jedinečný název prostředí, například blobevents-powershell.

    Tento příkaz načte soubory projektu z úložiště šablon a inicializuje projekt v aktuální složce nebo pracovním prostoru.

V azdprostředí udržuje jedinečný kontext nasazení pro vaši aplikaci a můžete definovat více než jeden. Je také součástí názvu skupiny prostředků, kterou vytvoříte v Azure.

Přidání souboru local.settings.json

Funkce potřebuje local.settings.json soubor ke konfiguraci hostitele při místním spuštění.

  1. Spuštěním tohoto příkazu přejděte do src složky aplikace:

    cd src
    
  1. Ve složce, která obsahuje tato data JSON, vytvořte soubor s názvem local.settings.jsonsrc :

    {
        "IsEncrypted": false,
        "Values": {
            "AzureWebJobsStorage": "UseDevelopmentStorage=true",
            "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
            "PDFProcessorSTORAGE": "UseDevelopmentStorage=true"
        }
    }
    
  1. Ve složce, která obsahuje tato data JSON, vytvořte soubor s názvem local.settings.jsonsrc :

    {
        "IsEncrypted": false,
        "Values": {
            "AzureWebJobsStorage": "UseDevelopmentStorage=true",
            "FUNCTIONS_WORKER_RUNTIME": "java",
            "PDFProcessorSTORAGE": "UseDevelopmentStorage=true"
        }
    }
    
  1. Ve složce, která obsahuje tato data JSON, vytvořte soubor s názvem local.settings.jsonsrc :

    {
        "IsEncrypted": false,
        "Values": {
            "AzureWebJobsStorage": "UseDevelopmentStorage=true",
            "FUNCTIONS_WORKER_RUNTIME": "node",
            "PDFProcessorSTORAGE": "UseDevelopmentStorage=true"
        }
    }
    
  1. Ve složce, která obsahuje tato data JSON, vytvořte soubor s názvem local.settings.jsonsrc :

    {
        "IsEncrypted": false,
        "Values": {
            "AzureWebJobsStorage": "UseDevelopmentStorage=true",
            "FUNCTIONS_WORKER_RUNTIME": "powershell",
            "FUNCTIONS_WORKER_RUNTIME_VERSION": "7.2",
            "PDFProcessorSTORAGE": "UseDevelopmentStorage=true"
        }
    }
    
  1. Ve složce, která obsahuje tato data JSON, vytvořte soubor s názvem local.settings.jsonsrc :

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

Vytvoření a aktivace virtuálního prostředí

src Ve složce spusťte tyto příkazy pro vytvoření a aktivaci virtuálního prostředí s názvem .venv:

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

Pokud Python neinstaluje balíček venv do distribuce Linuxu, spusťte následující příkaz:

sudo apt-get install python3-venv

Nastavení emulátoru místního úložiště

Před vytvořením a použitím prostředků Azure pomocí emulátoru Azurite spusťte projekt kódu místně.

  1. Pokud jste to ještě neudělali, nainstalujte Azurite.

  2. Stiskněte klávesu F1. Na paletě příkazů vyhledejte a spusťte příkaz Azurite: Start pro spuštění emulátoru místního úložiště.

  3. V oblasti Azure rozbalte Pracovní prostor>Připojené účty úložišť> a Místní emulátor, klikněte pravým tlačítkem myši (na Macu Ctrl-klikněte) na Kontejnery objektů Blob, vyberte Vytvořit kontejner objektů Blob..., a vytvořte tyto dva kontejnery úložiště Blob v místním emulátoru:

    • unprocessed-pdf: kontejner, který spouštěč monitoruje pro události úložiště.
    • processed-pdf: kontejner, do kterého funkce odesílá zpracované blobové objekty jako výstup.
  4. Rozbalte Blob Containers, klikněte pravým tlačítkem (Ctrl klikněte na Mac) na nezpracovaný-pdf, vyberte Nahrát soubory..., stiskněte Enter pro přijetí kořenového adresáře a nahrajte soubory PDF ze data složky projektu.

Při místním spuštění můžete pomocí rest aktivovat funkci simulací funkce, která přijímá zprávu z odběru událostí.

Místní spuštění funkce

Visual Studio Code se integruje s nástroji Azure Functions Core, které vám umožní spustit tento projekt na místním vývojovém počítači pomocí emulátoru Azurite. PDFProcessorSTORAGE Proměnná prostředí definuje připojení k účtu úložiště, které je také nastavené v souboru "UseDevelopmentStorage=true" local.settings.json při spuštění lokalně.

  1. Spusťte tento příkaz ze src složky projektu v terminálu nebo příkazovém řádku:

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

    Když se hostitel Functions spustí, zapíše název triggeru a typ triggeru do výstupu terminálu. Ve službě Functions obsahuje kořenová složka projektu soubor host.json.

  2. S Core Tools stále běžícími v Terminálu, otevřete test.http soubor ve svém projektu a vyberte Odeslat požadavek, abyste spustili ProcessBlobUpload funkci odesláním testovací blob události do webhooku blob události.

    Tento krok simuluje příjem události z odběru událostí při místním spuštění a měl by se zobrazit požadavek a zpracovávané informace o souboru napsané v protokolech. Pokud nepoužíváte REST Client, musíte použít jiný zabezpečený nástroj REST k volání koncového bodu s datovou částí v test.http.

  3. V oblasti pracovního prostoru kontejneru objektů blob rozbalte processed-pdf a ověřte, že funkce zpracovala soubor PDF a zkopírovala ho s předponou processed-.

  4. Až budete hotovi, ukončete proces hostitele stisknutím ctrl+C v okně func.exe terminálu.

Kontrola kódu (volitelné)

Můžete zkontrolovat kód, který definuje trigger objektu blob Event Gridu v souboru projektu ProcessBlobUpload.cs. Funkce ukazuje, jak:

  • Použití BlobTrigger s Source = BlobTriggerSource.EventGrid pro zpracování téměř v reálném čase
  • Připojit se k BlobClient blobu zdroje a BlobContainerClient blobu cíle
  • Zpracování obsahu objektu blob a jeho zkopírování do jiného kontejneru pomocí streamů

Můžete zkontrolovat kód, který definuje trigger objektu blob Event Gridu v souboru projektu function_app.py. Funkce ukazuje, jak:

  • Použití @app.blob_trigger s source="EventGrid" pro zpracování téměř v reálném čase
  • Přístup k obsahu objektu blob pomocí parametru InputStream
  • Kopírování zpracovaných souborů do cílového kontejneru pomocí sady AZURE Storage SDK

Můžete zkontrolovat kód, který definuje trigger objektu blob Event Gridu v souboru projektu processBlobUpload.ts. Funkce ukazuje, jak:

  • Použití app.storageBlob() s source: 'EventGrid' pro zpracování téměř v reálném čase
  • Přístup k obsahu objektů blob pomocí sady Node.js Azure Storage SDK
  • Asynchronní zpracování a kopírování souborů do cílového kontejneru

Můžete zkontrolovat kód, který definuje spouštěč blobu Event Gridu v souboru projektu ProcessBlobUpload.java. Funkce ukazuje, jak:

  • Použití @BlobTrigger s source = "EventGrid" pro zpracování téměř v reálném čase
  • Přístup k obsahu objektu blob pomocí BlobInputStream parametru
  • Kopírování zpracovaných souborů do cílového kontejneru pomocí sady Azure Storage SDK pro Javu

Můžete zkontrolovat kód, který definuje trigger objektu blob Event Gridu v souboru projektu ProcessBlobUpload/run.ps1 a odpovídající function.json. Funkce ukazuje, jak:

  • Konfigurace triggeru objektu blob v "source": "EventGrid" function.json pro zpracování téměř v reálném čase
  • Přístup k obsahu objektů blob pomocí rutin Azure Storage v PowerShellu
  • Zpracování a kopírování souborů do cílového kontejneru pomocí modulů Azure PowerShellu

Jakmile kód funkce zkontrolujete a ověříte místně, je čas projekt publikovat do Azure.

Vytvoření prostředků Azure a nasazení

Pomocí příkazu azd up vytvořte aplikace funkcí v plánu Flex Consumption spolu s dalšími požadovanými prostředky Azure, včetně odběru událostí. Jakmile je infrastruktura připravená, azd nasadí kód projektu také do nové aplikace funkcí v Azure.

  1. V editoru Visual Studio Code stisknutím klávesy F1 otevřete paletu příkazů. Vyhledejte a spusťte příkaz Azure Developer CLI (azd): Sign In with Azure Developer CLIa přihlaste se pomocí svého účtu Azure.

  2. V kořenovém adresáři projektu stisknutím klávesy F1 otevřete paletu příkazů. Vyhledejte a spusťte příkaz Azure Developer CLI (azd): Provision and Deploy (up) , který vytvoří požadované prostředky Azure a nasadí váš kód.

  3. Po zobrazení výzvy v okně terminálu zadejte tyto požadované parametry nasazení:

    Podnět Description
    Vyberte předplatné Azure, které chcete použít. Zvolte předplatné, pro které chcete vytvořit prostředky.
    Název prostředí Prostředí, které slouží k zachování jedinečného kontextu nasazení pro vaši aplikaci.
    Umístění Azure Oblast Azure, ve které se má vytvořit skupina prostředků, která obsahuje nové prostředky Azure. Zobrazí se pouze oblasti, které aktuálně podporují plán Flex Consumption.

    Příkaz azd up pomocí odpovědí na tyto výzvy s konfiguračními soubory Bicep vytvoří a nakonfiguruje tyto požadované prostředky Azure podle nejnovějších osvědčených postupů:

    • Plán Flex Consumption a aplikace funkcí
    • Účet služby Azure Storage s kontejnery objektů blob
    • Application Insights (doporučeno)
    • Zásady přístupu a role pro váš účet
    • Odběr Event Grid pro události Blob
    • Připojení mezi službami pomocí spravovaných identit (místo uložených připojovacích řetězců)

    Po úspěšném dokončení příkazu se vaše aplikace spustí v Azure s předplatným událostí nakonfigurovaným tak, aby aktivovala vaši funkci při přidání objektů blob do kontejneru unprocessed-pdf .

  4. Poznamenejte si AZURE_STORAGE_ACCOUNT_NAME i AZURE_FUNCTION_APP_NAME ve výstupu. Tyto názvy jsou jedinečné pro váš účet úložiště a aplikaci funkcí v Azure.

Ověření nasazené funkce

  1. V editoru Visual Studio Code stiskněte klávesu F1. Na paletě příkazů vyhledejte a spusťte příkaz Azure Storage: Upload Files.... Přijměte kořenový adresář a jako předtím nahrajte jeden nebo více souborů PDF ze data složky projektu.

  2. Po zobrazení výzvy vyberte název nového účtu úložiště (z AZURE_STORAGE_ACCOUNT_NAME). Vyberte kontejnery objektů BLOB>nezpracované-pdf.

  3. Stiskněte klávesu F1. Na paletě příkazů vyhledejte a spusťte příkaz Azure Storage: Open in Explorer. Vyberte stejný účet úložiště, >Blob Containers>processed-pdf, a pak otevřete v novém okně.

  4. V Průzkumníku ověřte, že vaše funkce zpracovala soubory PDF, které jste nahráli. Výstup se zapíše do kontejneru processed-pdf s předponou processed- .

Trigger objektu blob služby Event Grid zpracovává soubory během několika sekund od nahrání. Tato rychlost ukazuje možnosti tohoto přístupu téměř v reálném čase v porovnání s tradičními triggery objektů blob založenými na dotazování.

Opětovné nasazení kódu

azd up Spusťte příkaz tolikrát, kolikrát potřebujete zřizovat prostředky Azure a nasazovat aktualizace kódu do aplikace funkcí.

Poznámka:

Nasazené soubory kódu se vždy přepíšou nejnovějším balíčkem pro nasazení.

Vaše počáteční odpovědi na azd výzvy a všechny proměnné prostředí vygenerované azd pomocí se ukládají místně ve vašem pojmenovaném prostředí. azd env get-values Pomocí příkazu zkontrolujte všechny proměnné ve vašem prostředí, které se použily při vytváření prostředků Azure.

Vyčistěte zdroje

Po dokončení práce s aplikací funkcí a souvisejícími prostředky pomocí tohoto příkazu odstraňte aplikaci funkcí a související prostředky z Azure. Tato akce vám pomůže vyhnout se dalším nákladům:

azd down --no-prompt

Poznámka:

Tato --no-prompt možnost dává azd pokyn k odstranění skupiny prostředků bez potvrzení od vás.

Tento příkaz nemá vliv na místní projekt kódu.