Kurz: Aktivace Azure Functions v kontejnerech objektů blob pomocí odběru událostí

Předchozí verze služby Azure Functions Blob Storage aktivují dotazování vašeho kontejneru úložiště na změny. Novější verze rozšíření Blob Storage (5.x+) místo toho používá odběr událostí Event Gridu v kontejneru. Toto odběr událostí snižuje latenci aktivací funkce okamžitě, jakmile dojde ke změnám v odebíraném kontejneru.

Tento článek ukazuje, jak vytvořit funkci, která se spouští na základě událostí vyvolaých při přidání objektu blob do kontejneru. Visual Studio Code slouží k místnímu vývoji a k ověření kódu před nasazením projektu do Azure.

  • Vytvořte funkci aktivovanou službou Blob Storage založenou na událostech v novém projektu.
  • Ověřte místně v editoru Visual Studio Code pomocí emulátoru Azurite.
  • Vytvořte kontejner úložiště objektů blob v novém účtu úložiště v Azure.
  • Vytvoření aplikace funkcí v plánu Flex Consumption (Preview)
  • Vytvořte odběr události pro nový kontejner objektů blob.
  • Nasaďte a ověřte kód funkce v Azure.

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.

Tento článek vytvoří aplikaci jazyka C#, která běží v izolovaném pracovním režimu, která podporuje .NET 8.0.

Důležité

V tomto kurzu se používá plán Flex Consumption, který je aktuálně ve verzi Preview. Plán Flex Consumption podporuje pouze verzi triggeru Blob Storage založenou na událostech. Tento kurz můžete dokončit pomocí jakéhokoli jiného plánu hostování vaší aplikace funkcí.

Požadavky

Poznámka:

Rozšíření Azure Storage pro Visual Studio Code je aktuálně ve verzi Preview.

Vytvoření funkce aktivované objektem blob

Když vytvoříte funkci triggeru blob Storage pomocí editoru Visual Studio Code, vytvoříte také nový projekt. Funkci musíte upravit tak, aby spotřebovala odběr událostí jako zdroj, a ne abyste používali běžný kontejner s dotazovaným dotazem.

  1. V editoru Visual Studio Code otevřete aplikaci funkcí.

  2. Stisknutím klávesy F1 otevřete paletu příkazů, zadejte Azure Functions: Create Function...a vyberte Vytvořit nový projekt.

  3. V pracovním prostoru projektu vyberte umístění adresáře. Ujistěte se, že buď vytvoříte novou složku, nebo zvolíte prázdnou složku pro pracovní prostor projektu.

    Nevybírejte složku projektu, která už je součástí pracovního prostoru.

  4. Na příkazovém řádku zadejte následující informace:

    Instrukce Akce
    Výběr jazyka Vyberte možnost C#.
    Výběr modulu runtime .NET Vyberte možnost .NET 8.0 Isolated LTS.
    Výběr šablony pro první funkci projektu Vyberte možnost Azure Blob Storage trigger (using Event Grid).
    Zadejte název funkce. Zadejte BlobTriggerEventGrid.
    Zadání oboru názvů Zadejte My.Functions.
    Výběr nastavení z local.settings.json Vyberte možnost Create new local app setting.
    Výběr předplatného Vyberte své předplatné.
    Výběr účtu úložiště Pro místní úložiště použijte emulátor Azurite.
    Toto je cesta v rámci vašeho účtu úložiště, kterou trigger bude monitorovat. Přijměte výchozí hodnotu samples-workitems.
    Vyberte, jak chcete projekt otevřít. Vyberte možnost Open in current window.
    Instrukce Akce
    Výběr jazyka Vyberte možnost Python.
    Výběr interpreta Pythonu pro vytvoření virtuálního prostředí Vyberte preferovaný interpret Pythonu. Pokud se možnost nezobrazí, zadejte úplnou cestu k binárnímu souboru Pythonu.
    Výběr šablony pro první funkci projektu Vyberte možnost Azure Blob Storage trigger (using Event Grid).
    Zadejte název funkce. Zadejte BlobTriggerEventGrid.
    Výběr nastavení z local.settings.json Vyberte možnost Create new local app setting.
    Výběr předplatného Vyberte své předplatné.
    Výběr účtu úložiště Pro místní úložiště použijte emulátor Azurite.
    Toto je cesta v rámci vašeho účtu úložiště, kterou trigger bude monitorovat. Přijměte výchozí hodnotu samples-workitems.
    Vyberte, jak chcete projekt otevřít. Vyberte možnost Open in current window.
    Instrukce Akce
    Výběr jazyka Vyberte možnost Java.
    Výběr verze Javy Vyberte nebo Java 8vyberte Java 11 verzi Javy, na které běží vaše funkce v Azure a kterou jste místně ověřili.
    Zadejte ID skupiny. Vyberte možnost com.function.
    Zadejte ID artefaktu. Vyberte možnost BlobTriggerEventGrid.
    Zadejte verzi. Vyberte možnost 1.0-SNAPSHOT.
    Zadejte název balíčku. Vyberte možnost com.function.
    Zadejte název aplikace. Přijměte vygenerovaný název začínající na BlobTriggerEventGrid.
    Výběr nástroje pro sestavení pro projekt Java Vyberte možnost Maven.
    Vyberte, jak chcete projekt otevřít. Vyberte možnost Open in current window.
    Instrukce Akce
    Výběr jazyka pro projekt funkce Vyberte možnost TypeScript.
    Výběr programovacího modelu TypeScriptu Vyberte možnost Model V4.
    Výběr šablony pro první funkci projektu Vyberte možnost Azure Blob Storage trigger (using Event Grid).
    Zadejte název funkce. Zadejte BlobTriggerEventGrid.
    Výběr nastavení z local.settings.json Vyberte možnost Create new local app setting.
    Výběr předplatného Vyberte své předplatné.
    Výběr účtu úložiště Pro místní úložiště použijte emulátor Azurite.
    Toto je cesta v rámci vašeho účtu úložiště, kterou trigger bude monitorovat. Přijměte výchozí hodnotu samples-workitems.
    Vyberte, jak chcete projekt otevřít. Vyberte možnost Open in current window.
    Instrukce Akce
    Výběr jazyka pro projekt funkce Vyberte možnost JavaScript.
    Výběr programovacího modelu JavaScriptu Vyberte možnost Model V4.
    Výběr šablony pro první funkci projektu Vyberte možnost Azure Blob Storage trigger (using Event Grid).
    Zadejte název funkce. Zadejte BlobTriggerEventGrid.
    Výběr nastavení z local.settings.json Vyberte možnost Create new local app setting.
    Výběr předplatného Vyberte své předplatné.
    Výběr účtu úložiště Pro místní úložiště použijte emulátor Azurite.
    Toto je cesta v rámci vašeho účtu úložiště, kterou trigger bude monitorovat. Přijměte výchozí hodnotu samples-workitems.
    Vyberte, jak chcete projekt otevřít. Vyberte možnost Open in current window.
    Instrukce Akce
    Výběr jazyka pro projekt funkce Vyberte možnost PowerShell.
    Výběr šablony pro první funkci projektu Vyberte možnost Azure Blob Storage trigger (using Event Grid).
    Zadejte název funkce. Zadejte BlobTriggerEventGrid.
    Výběr nastavení z local.settings.json Vyberte možnost Create new local app setting.
    Výběr předplatného Vyberte své předplatné.
    Výběr účtu úložiště Pro místní úložiště použijte emulátor Azurite.
    Toto je cesta v rámci vašeho účtu úložiště, kterou trigger bude monitorovat. Přijměte výchozí hodnotu samples-workitems.
    Vyberte, jak chcete projekt otevřít. Vyberte možnost Open in current window.

Upgrade rozšíření úložiště

Pokud chcete použít trigger služby Event Grid Blob Storage, musíte mít aspoň verzi 5.x rozšíření Azure Functions Storage.

Pokud chcete upgradovat projekt s požadovanou verzí rozšíření, spusťte v okně terminálu tento dotnet add package příkaz:

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs 
  1. Otevřete soubor projektu host.json a zkontrolujte extensionBundle prvek.

  2. Pokud extensionBundle.version alespoň není 3.3.0 , nahraďte extensionBundle prvek touto verzí:

    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.0.0, 5.0.0)"
    }
    

Příprava emulace místního úložiště

Visual Studio Code používá Azurite k emulaci služeb Azure Storage při místním spuštění. Azurite slouží k emulaci služby Azure Blob Storage během místního vývoje a testování.

  1. Pokud jste to ještě neudělali, nainstalujte rozšíření Azurite v3 pro Visual Studio Code.

  2. Ověřte, že je u souboru "UseDevelopmentStorage=true" local.settings.json nastavená AzureWebJobsStoragehodnota , která nástroji Core Tools říká, aby při místním spuštění používaly Azurite místo skutečného připojení k účtu úložiště.

  3. Stisknutím klávesy F1 otevřete paletu příkazů, zadejte Azurite: Start Blob Servicea stiskněte enter, čímž spustíte emulátor služby Azurite Blob Storage.

  4. Na panelu aktivit vyberte ikonu Azure, rozbalte místní emulátor účtů>úložiště připojených k pracovnímu prostoru>, klikněte pravým tlačítkem na kontejnery objektů blob, vyberte Vytvořit kontejner objektů blob..., zadejte název samples-workitemsa stiskněte Enter.

    Snímek obrazovky znázorňující výběr možnosti Vytvořit kontejner objektů blob v místní emulaci v editoru Visual Studio Code

  5. Rozbalte ukázky kontejnerů>objektů blob a vyberte Nahrát soubory....

    Snímek obrazovky znázorňující výběr možnosti Nahrát soubory v kontejneru samples-workitems v místní emulaci v editoru Visual Studio Code

  6. Zvolte soubor, který chcete nahrát do místně emulovaného kontejneru. Tento soubor se později zpracuje vaší funkcí, aby ověřil a ladil kód funkce. Textový soubor může nejlépe fungovat s kódem šablony triggeru objektu blob.

Místní spuštění funkce

Když máte soubor v emulovaném úložišti, můžete funkci spustit a simulovat událost vyvolanou odběrem služby Event Grid. Informace o události předané triggeru závisí na souboru, který jste přidali do místního kontejneru.

  1. Nastavte všechny zarážky a stisknutím klávesy F5 spusťte projekt pro místní ladění. Nástroje Azure Functions Core Tools by měly být spuštěné v okně terminálu.

  2. Zpět v oblasti Azure rozbalte položku Funkce místního projektu>pracovního prostoru>, klikněte pravým tlačítkem myši na funkci a vyberte Spustit funkci nyní....

    Snímek obrazovky znázorňující, jak vybrat tlačítko Spustit funkci nyní z funkce v pracovním prostoru místního projektu v editoru Visual Studio Code

  3. V dialogovém okně textu požadavku zadejte samples-workitems/<TEST_FILE_NAME>a nahraďte <TEST_FILE_NAME> názvem souboru, který jste nahráli v emulátoru místního úložiště.

  4. Stisknutím klávesy Enter funkci spusťte. Zadaná hodnota je cesta k objektu blob v místním emulátoru. Tento řetězec se předá triggeru v datové části požadavku, který simuluje datovou část, když odběr události volá vaši funkci, aby nahlásil objekt blob přidaný do kontejneru.

  5. Zkontrolujte výstup spuštění této funkce. Ve výstupu by se měl zobrazit název souboru a jeho obsah zaprotokolovaný. Pokud nastavíte nějaké zarážky, možná budete muset pokračovat v provádění.

Teď, když jste úspěšně ověřili kód funkce místně, je čas projekt publikovat do nové aplikace funkcí v Azure.

Příprava účtu služby Azure Storage

Odběry událostí služby Azure Storage vyžadují účet úložiště pro obecné účely verze 2. K vytvoření tohoto účtu úložiště můžete použít rozšíření Azure Storage pro Visual Studio Code.

  1. V editoru Visual Studio Code znovu stisknutím klávesy F1 otevřete paletu příkazů a zadejte Azure Storage: Create Storage Account.... Po zobrazení výzvy zadejte tyto informace:

    Instrukce Akce
    Zadejte název nového účtu úložiště. Zadejte název, který je globálně jedinečný. Názvy účtů úložiště musí mít délku 3 až 24 znaků s malými písmeny a číslicemi. Pro snadnější identifikaci používáme stejný název pro skupinu prostředků a název aplikace funkcí.
    Výběr umístění pro nové prostředky Pokud chcete dosáhnout lepšího výkonu , zvolte oblast blízko vás.

    Rozšíření vytvoří účet úložiště pro obecné účely verze 2 s názvem, který jste zadali. Stejný název se používá také pro skupinu prostředků, která obsahuje účet úložiště. Aktivační událost služby Blob Storage založená na Event Gridu vyžaduje účet úložiště pro obecné účely verze 2.

  2. Stiskněte znovu klávesu F1 a v paletě příkazů zadejte Azure Storage: Create Blob Container.... Po zobrazení výzvy zadejte tyto informace:

    Instrukce Akce
    Výběr prostředku Vyberte účet úložiště pro obecné účely verze 2, který jste vytvořili.
    Zadejte název nového kontejneru objektů blob. Zadejte samples-workitems, což je název kontejneru odkazovaný v projektu kódu.

Vaše aplikace funkcí také potřebuje ke spuštění účet úložiště. Pro zjednodušení tento kurz používá stejný účet úložiště pro trigger objektu blob a vaši aplikaci funkcí. V produkčním prostředí ale můžete chtít použít samostatný účet úložiště s vaší aplikací funkcí. Další informace najdete v tématu Důležité informace o úložišti pro službu Azure Functions.

Vytvoření aplikace funkcí

Pomocí těchto kroků vytvořte aplikaci funkcí v plánu Flex Consumption. Když je vaše aplikace hostovaná v plánu Flex Consumption, triggery blob Storage musí používat odběry událostí.

  1. Do palety příkazů zadejte Azure Functions: Vytvoření aplikace funkcí v Azure... (Upřesnit).

  2. Po zobrazení výzev zadejte tyto informace:

    Instrukce Výběr
    Zadejte globálně jedinečný název nové aplikace funkcí. Zadejte globálně jedinečný název, který identifikuje novou aplikaci funkcí, a pak vyberte Enter. Platné znaky pro název aplikace funkcí jsou a-z, 0-9 a -.
    Vyberte plán hostování. Zvolte Flex Consumption (Preview).
    Vyberte zásobník modulu runtime. Zvolte sadu jazyků a verzi, na které jste místně spustili.
    Vyberte skupinu prostředků pro nové prostředky. Zvolte existující skupinu prostředků, ve které jste vytvořili účet úložiště.
    Vyberte umístění pro nové prostředky. Vyberte umístění v podporované oblasti blízko vás nebo v blízkosti jiných služeb, ke kterým vaše funkce přistupují. Nepodporované oblasti se nezobrazují. Další informace najdete v tématu Zobrazení aktuálně podporovaných oblastí.
    Vyberte účet úložiště. Zvolte název účtu úložiště, který jste vytvořili.
    Vyberte prostředek Application Insights pro vaši aplikaci. Zvolte Vytvořit nový prostředek Application Insights a na příkazovém řádku zadejte název instance použité k ukládání dat modulu runtime z vašich funkcí.

    Po vytvoření aplikace funkcí se zobrazí oznámení. Výběrem možnosti Zobrazit výstup v tomto oznámení zobrazíte výsledky vytváření, včetně prostředků Azure, které jste vytvořili.

Nasazení kódu funkce

Důležité

Nasazení do existující aplikace funkcí vždy přepíše obsah této aplikace v Azure.

  1. Na paletě příkazů zadejte a pak vyberte Azure Functions: Nasadit do aplikace funkcí.

  2. Vyberte aplikaci funkcí, kterou jste právě vytvořili. Po zobrazení výzvy k přepsání předchozích nasazení vyberte Nasadit a nasaďte kód funkce do nového prostředku aplikace funkcí.

  3. Po dokončení nasazení vyberte Zobrazit výstup a zobrazte výsledky vytváření a nasazení, včetně prostředků Azure, které jste vytvořili. Pokud oznámení vynecháte, vyberte ikonu zvonku v pravém dolním rohu a znovu ho zobrazíte.

    Snímek obrazovky s oknem Zobrazit výstup

Aktualizace nastavení aplikace

Vzhledem k tomu, že požadovaná nastavení aplikace ze local.settings.json souboru nejsou automaticky publikovaná, musíte je nahrát do aplikace funkcí, aby vaše funkce běžela správně v Azure.

  1. Do příkazové palety zadejte Azure Functions: Download Remote Settings...a do příkazového řádku Vyberte prostředek zvolte název vaší aplikace funkcí.

  2. Po zobrazení výzvy, že AzureWebJobsStorage nastavení již existuje, vyberte Ano, pokud chcete přepsat nastavení místního emulátoru skutečným účtem úložiště připojovací řetězec z Azure.

  3. local.settings.json V souboru nahraďte nastavení místního emulátoru stejnými připojovací řetězec, proAzureWebJobsStorage které se používá.

  4. FUNCTIONS_WORKER_RUNTIME Odeberte položku, která není v plánu Flex Consumption podporovaná.

  5. Do příkazové palety zadejte Azure Functions: Upload Local Settings...a do příkazového řádku Vyberte prostředek zvolte název vaší aplikace funkcí.

Hostitel služby Functions i trigger teď sdílejí stejný účet úložiště.

Sestavení adresy URL koncového bodu

Pokud chcete vytvořit odběr událostí, musíte službě Event Grid poskytnout adresu URL konkrétního koncového bodu pro hlášení událostí služby Blob Storage. Tato adresa URL rozšíření objektu blob se skládá z těchto částí:

Část Příklad
Adresa URL základní aplikace funkcí https://<FUNCTION_APP_NAME>.azurewebsites.net
Cesta specifická pro objekt blob /runtime/webhooks/blobs
Řetězec dotazu funkce ?functionName=Host.Functions.BlobTriggerEventGrid
Přístupový klíč rozšíření objektu blob &code=<BLOB_EXTENSION_KEY>

Přístupový klíč rozšíření objektu blob je navržený tak, aby ostatním ztížil přístup ke koncovému bodu rozšíření objektu blob. Určení přístupového klíče rozšíření objektu blob:

  1. V editoru Visual Studio Code zvolte ikonu Azure na panelu aktivit. V části Prostředky rozbalte své předplatné, rozbalte aplikaci Funkcí, klikněte pravým tlačítkem na aplikaci funkcí, kterou jste vytvořili, a vyberte Otevřít na portálu.

  2. V části Funkce v nabídce vlevo vyberte Klíče aplikace.

  3. V části Systémové klíče vyberte klíč s názvem blobs_extension a zkopírujte hodnotu klíče.

    Tuto hodnotu zahrnete do řetězce dotazu nové adresy URL koncového bodu.

  4. Vytvořte novou adresu URL koncového bodu pro trigger služby Blob Storage na základě následujícího příkladu:

    https://<FUNCTION_APP_NAME>.azurewebsites.net/runtime/webhooks/blobs?functionName=Host.Functions.BlobTriggerEventGrid&code=<BLOB_EXTENSION_KEY>
    

    V tomto příkladu nahraďte <FUNCTION_APP_NAME> názvem vaší aplikace funkcí a nahraďte <BLOB_EXTENSION_KEY> hodnotou, kterou jste získali z portálu. Pokud jste pro funkci použili jiný název, budete také muset změnit functionName hodnotu řetězce dotazu na název vaší funkce.

Tuto adresu URL koncového bodu teď můžete použít k vytvoření odběru událostí.

Vytvoření odběru událostí

Odběr událostí využívající Azure Event Grid vyvolává události na základě změn v odběru kontejneru objektů blob. Tato událost se pak odešle do koncového bodu rozšíření objektu blob pro vaši funkci. Po vytvoření odběru událostí nemůžete aktualizovat adresu URL koncového bodu.

  1. V editoru Visual Studio Code zvolte ikonu Azure na panelu aktivit. V části Prostředky rozbalte své předplatné, rozbalte účty úložiště, klikněte pravým tlačítkem na účet úložiště, který jste vytvořili dříve, a vyberte Otevřít na portálu.

  2. Přihlaste se k webu Azure Portal a poznamenejte si skupinu prostředků pro svůj účet úložiště. Ostatní prostředky vytvoříte ve stejné skupině, abyste usnadnili vyčištění prostředků po dokončení.

  3. v nabídce vlevo vyberte možnost Události.

    Přidání události účtu úložiště

  4. V okně Události vyberte tlačítko + Odběr události a zadejte hodnoty z následující tabulky na kartě Základní:

    Nastavení Navrhovaná hodnota Description
    Jméno myBlobEventSub Název, který identifikuje odběr události. Název můžete použít k rychlému vyhledání odběru událostí.
    Schéma událostí Schéma Event Gridu Pro události použijte výchozí schéma.
    Název systémového tématu samples-workitems-blobs Název tématu, který představuje kontejner. Téma se vytvoří s prvním předplatným a použijete ho pro budoucí odběry událostí.
    Filtrování podle typů událostí Vytvoření objektu blob
    Typ koncového bodu Web Hook Trigger úložiště objektů blob používá koncový bod webhooku.
    Endpoint Koncový bod adresy URL na základě Azure Použijte vytvořený koncový bod adresy URL, který zahrnuje hodnotu klíče.
  5. Výběrem možnosti Potvrdit výběr ověřte adresu URL koncového bodu.

  6. Výběrem možnosti Vytvořit vytvořte odběr události.

Nahrání souboru do kontejneru

Soubor z počítače můžete nahrát do kontejneru úložiště objektů blob pomocí editoru Visual Studio Code.

  1. V editoru Visual Studio Code stisknutím klávesy F1 otevřete paletu příkazů a zadejte Azure Storage: Upload Files....

  2. V dialogovém okně Otevřít zvolte soubor, nejlépe textový soubor, a vyberte Nahrát .

  3. Podle pokynů na obrazovce zadejte tyto informace:

    Nastavení Navrhovaná hodnota Popis
    Zadejte cílový adresář tohoto nahrání. default Stačí přijmout výchozí hodnotu /, což je kořen kontejneru.
    Výběr prostředku Název účtu úložiště Zvolte název účtu úložiště, který jste vytvořili v předchozím kroku.
    Výběr typu prostředku Kontejnery objektů blob Nahráváte do kontejneru objektů blob.
    Výběr kontejneru objektů blob samples-workitems Tato hodnota je název kontejneru, který jste vytvořili v předchozím kroku.

Vyhledejte soubor, který chcete nahrát, a pak výběrem tlačítka Nahrát soubor nahrajte.

Ověření funkce v Azure

Když jste teď nahráli soubor do kontejneru samples-workitems , měla by se funkce aktivovat. Ověření můžete ověřit tak, že na webu Azure Portal zkontrolujete následující:

  1. V účtu úložiště přejděte na stránku Události , vyberte Odběry událostí a měli byste vidět, že byla událost doručena. Událost se může zobrazit v grafu až pět minut.

  2. Zpátky na stránce vaší aplikace funkcí na portálu v části Funkce najdou vaši funkci a vyberou vyvolání a další. Měli byste vidět trasování napsaná z úspěšného spuštění funkce.

Vyčištění prostředků

Až budete pokračovat k dalšímu kroku a přidáte vazbu fronty Azure Storage do funkce, budete muset zachovat všechny prostředky, abyste mohli stavět na tom, co jste už udělali.

Jinak můžete pomocí následujícího postupu odstranit aplikaci funkcí a související prostředky, abyste se vyhnuli dalším nákladům.

  1. V editoru Visual Studio Code stisknutím klávesy F1 otevřete paletu příkazů. Na paletě příkazů vyhledejte a vyberte Azure: Open in portal.

  2. Zvolte aplikaci funkcí a stiskněte Enter. Otevře se stránka aplikace funkcí na webu Azure Portal.

  3. Na kartě Přehled vyberte pojmenovaný odkaz vedle skupiny prostředků.

    Snímek obrazovky s výběrem skupiny prostředků, která se má odstranit ze stránky aplikace funkcí

  4. Na stránce Skupina prostředků zkontrolujte seznam zahrnutých prostředků a ověřte, že se jedná o prostředky, které chcete odstranit.

  5. Vyberte Odstranit skupinu prostředků a postupujte podle pokynů.

    Odstranění může trvat několik minut. Po jeho dokončení se na několik sekund zobrazí oznámení. K zobrazení tohoto oznámení můžete také vybrat ikonu zvonku v horní části stránky.

Další informace o nákladech na službu Functions najdete v tématu Odhad nákladů na plán Consumption.

Další kroky