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

Pokud používáte starší verze triggeru služby Blob Storage se službou Azure Functions, často dochází ke zpoždění spuštění, protože trigger se dotazuje kontejneru objektů blob na aktualizace. Latenci můžete snížit aktivací funkce pomocí odběru událostí do stejného kontejneru. Odběr událostí používá infrastrukturu Event Gridu k předávání změn v kontejneru, jakmile k nim dojde. Tuto funkci můžete implementovat pomocí nejnovějších rozšíření Azure Functions.

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. K místnímu vývoji použijete Visual Studio Code a před nasazením projektu do Azure zkontrolujete, že funkce funguje místně.

  • Vytvořte obecný účet úložiště v2 ve službě Azure Storage.
  • Vytvořte kontejner v úložišti objektů blob.
  • Vytvořte funkci aktivovanou službou Blob Storage řízenou událostmi.
  • Vytvořte odběr události kontejneru objektů blob.
  • Místní ladění pomocí nástroje ngrok nahrajete soubory.
  • Nasaďte do Azure a vytvořte filtrované odběry událostí.

Důležité

Tento článek používá karty pro podporu více verzí programovacího modelu Node.js. Model v4 je obecně dostupný a je navržený tak, aby měl flexibilnější a intuitivnější prostředí pro vývojáře v JavaScriptu a TypeScriptu. Další podrobnosti o tom, jak model v4 funguje, najdete v příručce pro vývojáře služby Azure Functions Node.js. Další informace o rozdílech mezi v3 a v4 najdete v průvodci migrací.

Požadavky

  • Nástroj ngrok , který poskytuje způsob, jak Azure volat do místně spuštěné funkce.

  • Rozšíření Azure Storage pro Visual Studio Code, minimálně verze 5.x.

Poznámka:

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

Vytvoření účtu úložiště

Pokud chcete používat odběr událostí se službou Azure Storage, budete potřebovat účet úložiště pro obecné účely verze 2. Ve výchozím nastavení můžete tento účet úložiště vytvořit z projektu editoru Visual Studio Code, když máte nainstalované rozšíření Azure Storage.

  1. V editoru Visual Studio Code otevřete paletu příkazů (stiskněte klávesu F1), zadejte Azure Storage: Create Storage Account.... Na příkazovém řádku zadejte následující informace:

    Výzva 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žijeme 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ě.

  2. Po vytvoření účtu úložiště otevřete paletu příkazů (stiskněte klávesu F1) a zadejte Azure Storage: Create Blob Container.... Na příkazovém řádku zadejte následující informace:

    Výzva Akce
    Výběr prostředku Vyberte účet úložiště, 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.

Teď, když jste vytvořili kontejner objektů blob, můžete vytvořit jak funkci, která se aktivuje v tomto kontejneru, tak odběr událostí, která do vaší funkce doručí události.

Vytvoření funkce aktivované objektem blob

Když vytvoříte funkci aktivovanou službou Blob Storage pomocí editoru Visual Studio Code, vytvoříte také nový projekt. Místo použití běžného kontejneru s dotazovaným dotazem budete muset funkci upravit tak, aby spotřebovala odběr událostí jako zdroj.

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

  2. Otevřete paletu příkazů (stiskněte klávesu F1), 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:

    Výzva Akce
    Výběr jazyka Vyberte možnost C#.
    Výběr modulu runtime .NET Vyberte .NET 6.0 Isolated LTS , jestli chcete běžet v izolovaném pracovním procesu nebo .NET 6.0 LTS v procesu.
    Výběr šablony pro první funkci projektu Vyberte možnost Azure Blob Storage trigger.
    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 účtu úložiště Ze seznamu vyberte účet úložiště, který jste vytvořili.
    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.
    Výzva 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.
    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 účtu úložiště Ze seznamu vyberte účet úložiště, který jste vytvořili.
    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.
    Výzva 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.
    Výzva 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.
    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 účtu úložiště Vyberte účet úložiště, který jste vytvořili.
    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.
    Výzva 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.
    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 účtu úložiště Vyberte účet úložiště, který jste vytvořili.
    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.
    Výzva 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.
    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 účtu úložiště Vyberte účet úložiště, který jste vytvořili.
    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.
  5. Po zobrazení výzvy vyberte Vybrat účet>úložiště Přidat do pracovního prostoru.

Pro zjednodušení tento kurz znovu používá stejný účet úložiště s vaší aplikací 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.

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

Pokud chcete použít trigger služby Event Grid Blob Storage, vaše funkce vyžaduje alespoň verzi 5.x pro rozšíření úložiště.

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

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

  2. Pokud extensionBundle.version aspoň 3.3.0 není, nahraďte extensionBundle ho nejnovějším kódem:

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

Aktualizace funkce tak, aby používala události

V souboru BlobTriggerEventGrid.cs přidejte Source = BlobTriggerSource.EventGrid do parametrů atributu triggeru objektu blob, například:

[Function("BlobTriggerCSharp")]
public async Task Run([BlobTrigger("samples-workitems/{name}", Source = BlobTriggerSource.EventGrid, Connection = "<NAMED_STORAGE_CONNECTION>")] Stream myBlob, string name, FunctionContext executionContext)
{
    var logger = executionContext.GetLogger("BlobTriggerCSharp");
    logger.LogInformation($"C# Blob trigger function Processed blob\n Name: {name} \n Size: {myBlob.Length} Bytes");
}

Po vytvoření funkce v konfiguračním souboru function.json přidejte "source": "EventGrid" do myBlob vazby například:

{
  "scriptFile": "__init__.py",
  "bindings": [
    {
      "name": "myblob",
      "type": "blobTrigger",
      "direction": "in",
      "path": "samples-workitems/{name}",
      "source": "EventGrid",
      "connection": "<NAMED_STORAGE_CONNECTION>"
    }
  ]
}
  1. Ve vygenerovaném Function.java souboru nahraďte obsah následujícím kódem a přejmenujte soubor na BlobTriggerEventGrid.java:

    package com.function;
    
    import com.microsoft.azure.functions.annotation.*;
    import com.microsoft.azure.functions.*;
    
    /**
    * Azure Functions with Azure Blob trigger.
    */
    public class BlobTriggerEventGrid {
        /**
        * This function will be invoked when a new or updated blob is detected at the specified path. The blob contents are provided as input to this function.
        */
        @FunctionName("BlobTriggerEventGrid")
        @StorageAccount("glengatesteventgridblob_STORAGE")
        public void run(
            @BlobTrigger(name = "content", path = "samples-workitems/{name}", dataType = "binary", source = "EventGrid" ) byte[] content,
            @BindingName("name") String name,
            final ExecutionContext context
        ) {
              context.getLogger().info("Java Blob trigger function processed a blob. Name: " + name + "\n  Size: " + content.length + " Bytes");
          }
    }
    
  2. Odeberte přidružený testovací soubor jednotek, který už neplatí pro nový typ triggeru.

Po vytvoření funkce přidejte source: "EventGrid" do objektu options v souboru TypeScriptu například:

import { app, InvocationContext } from '@azure/functions';

export async function storageBlobTrigger1(blob: Buffer, context: InvocationContext): Promise<void> {
    context.log(
        `Storage blob function processed blob "${context.triggerMetadata.name}" with size ${blob.length} bytes`
    );
}

app.storageBlob('storageBlobTrigger1', {
    path: 'samples-workitems/{name}',
    connection: 'MyStorageAccountAppSetting',
    source: 'EventGrid',
    handler: storageBlobTrigger1,
});

Po vytvoření funkce přidejte source: "EventGrid" do objektu options v souboru JavaScriptu například:

const { app } = require('@azure/functions');

app.storageBlob('storageBlobTrigger1', {
    path: 'samples-workitems/{name}',
    connection: 'MyStorageAccountAppSetting',
    source: 'EventGrid',
    handler: (blob, context) => {
        context.log(
            `Storage blob function processed blob "${context.triggerMetadata.name}" with size ${blob.length} bytes`
        );
    },
});

Po vytvoření funkce v konfiguračním souboru function.json přidejte "source": "EventGrid" do myBlob vazby například:

{
    "bindings": [
        {
            "name": "myblob",
            "type": "blobTrigger",
            "direction": "in",
            "path": "samples-workitems/{name}",
            "source": "EventGrid",
            "connection": "<NAMED_STORAGE_CONNECTION>"
        }
    ]
}

Spuštění místního ladění

Event Grid ověří adresu URL koncového bodu při vytváření odběru událostí na webu Azure Portal. Toto ověření znamená, že před vytvořením odběru událostí pro místní ladění musí být vaše funkce spuštěna místně s povoleným vzdáleným přístupem nástrojem ngrok. Pokud váš místní kód funkce není spuštěný a přístupný pro Azure, nebudete moct vytvořit odběr událostí.

Určení koncového bodu triggeru objektu blob

Když se vaše funkce spustí místně, výchozí koncový bod použitý pro trigger úložiště objektů blob řízený událostmi vypadá jako následující adresa URL:

http://localhost:7071/runtime/webhooks/blobs?functionName=Host.Functions.BlobTriggerEventGrid
http://localhost:7071/runtime/webhooks/blobs?functionName=Host.Functions.BlobTriggerEventGrid

Tuto cestu uložte, kterou použijete později k vytvoření adres URL koncových bodů pro odběry událostí. Pokud jste pro aktivovanou funkci Blob Storage použili jiný název, musíte změnit functionName hodnotu v řetězci dotazu.

Poznámka:

Vzhledem k tomu, že koncový bod zpracovává události pro trigger služby Blob Storage, cesta ke koncovému bodu zahrnuje blobs. Adresa URL koncového bodu triggeru Event Gridu by místo toho měla eventgrid v cestě.

Spustit ngrok

Pokud chcete na svém počítači rozdělit funkci, která se ladí, musíte službě Azure Event Grid poskytnout způsob, jak komunikovat s funkcemi běžícími na místním počítači.

Nástroj ngrok předává externí požadavky na náhodně vygenerovanou adresu proxy serveru na konkrétní adresu a port na místním počítači. voláním koncového bodu webhooku funkce spuštěné na vašem počítači.

  1. Spusťte ngrok pomocí následujícího příkazu:

    ngrok.exe http http://localhost:7071
    

    Při spuštění nástroje by příkazové okno mělo vypadat podobně jako na následujícím snímku obrazovky:

    Screenshot that shows the Command Prompt after starting the

  2. Zkopírujte adresu URL HTTPS vygenerovanou při spuštění ngroku. Tato hodnota se používá k určení koncového bodu webhooku na vašem počítači vystaveného pomocí nástroje ngrok.

Důležité

V tuto chvíli nezastavujte ngrok. Při každém spuštění ngrokse adresa URL HTTPS znovu vygeneruje s jinou hodnotou. Vzhledem k tomu, že koncový bod odběru událostí se nedá upravit, musíte při každém spuštění ngrokvytvořit nové odběry událostí.

Pokud nevytvoříte účet ngrok, maximální doba relace ngrok je omezená na dvě hodiny.

Sestavení adresy URL koncového bodu

Koncový bod použitý v odběru událostí se skládá ze tří různých částí, názvu předpony serveru, cesty a řetězce dotazu. Následující tabulka popisuje tyto části:

Část Adresa URL Popis
Název předpony a serveru Když se vaše funkce spustí místně, název serveru s předponou https:// pochází z adresy URL pro předávání vygenerované ngrokem. V adrese URL localhost nahradí http://localhost:7071adresa URL ngrok . Při spuštění v Azure místo toho použijete publikovaný server aplikace funkcí, který je obvykle ve formuláři https://<FUNCTION_APP_NAME>.azurewebsites.net.
Cesta Část cesty adresy URL koncového bodu pochází z adresy URL místního hostitele zkopírované dříve a vypadá jako /runtime/webhooks/blobs trigger služby Blob Storage. Cesta pro trigger Event Gridu by byla /runtime/webhooks/EventGrid
Řetězec dotazu Pro všechny jazyky, včetně rozhraní .NET Isolated, functionName=Host.Functions.BlobTriggerEventGrid parametr, s výjimkou procesu v .NET, který by měl být functionName=BlobTriggerEventGrid v řetězci dotazu, nastaví název funkce, která zpracovává událost. Pokud jste pro funkci použili jiný název, budete muset tuto hodnotu změnit. Přístupový klíč se při místním spuštění nevyžaduje. Při spuštění v Azure budete také muset do adresy URL zahrnout code= parametr, který obsahuje klíč, který můžete získat z portálu.

Následující snímek obrazovky ukazuje příklad, jak by měla adresa URL koncového bodu vypadat při použití triggeru služby Blob Storage s názvem BlobTriggerEventGrid:

Endpoint selection

Spuštění ladění

Po spuštění nástroje ngrok spusťte místní projekt následujícím způsobem:

  1. Nastavte ve funkci zarážku na řádku, který zpracovává protokolování.

  2. Spusťte ladicí relaci.

    Otevřete nový terminál a spuštěním následujícího mvn příkazu spusťte ladicí relaci.

    mvn azure-functions:run -DenableDebug
    

    Stisknutím klávesy F5 spusťte ladicí relaci.

Když je kód spuštěný a předávací požadavky ngrok, je čas vytvořit odběr události kontejneru objektů blob.

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 propojeném kontejneru objektů blob. Tato událost se pak odešle do koncového bodu webhooku na triggeru vaší funkce. Po vytvoření odběru událostí není možné změnit adresu URL koncového bodu. To znamená, že po dokončení místního ladění (nebo po restartování nástroje ngrok) budete muset odběr události odstranit a znovu vytvořit.

  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ě. Další 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.

    Add storage account event

  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 myBlobLocalNgrokEventSub 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. Azure Functions byste použili pro trigger Event Gridu.
    Endpoint Koncový bod adresy URL na základě ngroku Použijte koncový bod adresy URL založený na ngroku, který jste určili dříve.
  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

Když je odběr událostí zavedený a projekt kódu a ngrok stále běží, můžete teď nahrát soubor do kontejneru úložiště a aktivovat funkci. 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 otevřete paletu příkazů (stiskněte klávesu F1) a zadejte Azure Storage: Upload Files....

  2. V dialogovém okně Otevřít zvolte soubor, nejlépe binární soubor obrázku, který není příliš velký, vyberte Nahrát .

  3. Podle pokynů na obrazovce zadejte tyto informace:

    Nastavení Navrhovaná hodnota Popis
    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.
    Zadejte cílový adresář tohoto nahrání. default Stačí přijmout výchozí hodnotu /, což je kořen kontejneru.

Tento příkaz nahraje soubor z počítače do kontejneru úložiště v Azure. V tuto chvíli by vaše spuštěná instance ngrok měla hlásit, že se žádost přeposlala. Uvidíte také ve výstupu func.exe relace ladění, kterou vaše funkce spustila. Doufáme, že v tuto chvíli čeká vaše ladicí relace na to, kde nastavíte zarážku.

Publikování projektu do Azure

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

Vytvoření aplikace funkcí

Následující kroky vytvoří prostředky, které potřebujete v Azure, a nasadí soubory projektu.

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

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

    Výzva 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 -. Zapište si tento název; Budete ho potřebovat později při vytváření nové adresy URL koncového bodu.
    Vyberte zásobník modulu runtime. Zvolte jazyková verze, na které jste místně spustili.
    Vyberte operační systém. Zvolte Linux nebo Windows. Aplikace v Pythonu musí běžet v Linuxu.
    Vyberte skupinu prostředků pro nové prostředky. Zvolte název skupiny prostředků, kterou jste vytvořili pomocí účtu úložiště, který jste si dříve poznamenali na portálu.
    Vyberte umístění pro nové prostředky. Vyberte umístění v oblasti blízko vás nebo v blízkosti jiných služeb, ke kterým vaše funkce přistupují.
    Vyberte plán hostování. Zvolte Consumption pro hostování bezserverového plánu Consumption, kde se vám účtují poplatky jenom při spuštění funkcí.
    Vyberte účet úložiště. Zvolte název existujícího účtu úložiště, který používáte.
    Vyberte prostředek Přehledy aplikace. Zvolte Vytvořit novou aplikaci Přehledy prostředek 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í a použije se balíček pro nasazení. Výběrem možnosti Zobrazit výstup v tomto oznámení zobrazíte výsledky vytváření a nasazení, 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. V oblasti Prostředky aktivity Azure vyhledejte prostředek aplikace funkcí, který jste právě vytvořili, klikněte pravým tlačítkem na prostředek a vyberte Nasadit do aplikace funkcí....

  2. 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 zobrazte.

    Screenshot of the View Output window.

Publikování nastavení aplikace

Vzhledem k tomu, že místní nastavení z local.settings.json se nepublikuje automaticky, musíte je nahrát, aby funkce běžela správně v Azure.

Do palety příkazů zadejte Azure Functions: Nahrát místní Nastavení... a do pole Vybrat prostředek. Výzva zvolte název vaší aplikace funkcí.

Opětovné vytvoření odběru události

Teď, když je aplikace funkcí spuštěná v Azure, musíte vytvořit nové odběry událostí. Toto nové odběry událostí používá koncový bod vaší funkce v Azure. Do odběru událostí přidáte také filtr, aby se funkce aktivovala jenom při přidání souborů JPEG (.jpg) do kontejneru. V Azure obsahuje adresa URL koncového bodu také přístupový klíč, který pomáhá blokovat jiné aktéry než Event Grid v přístupu ke koncovému bodu.

Získání 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.

Sestavení adresy URL koncového bodu

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>
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 podle potřeby změnit functionName řetězec dotazu.

Vytvoření filtrovaného odběru událostí

Protože adresu URL koncového bodu odběru událostí nejde změnit, musíte vytvořit nové odběry událostí. V tuto chvíli byste také měli odstranit staré odběry událostí, protože ho nejde znovu použít.

Tentokrát zahrnete filtr odběru událostí, aby funkci aktivovaly jenom soubory JPEG (*.jpg).

  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. Na webu Azure Portal vyberte v nabídce vlevo možnost Události .

  3. V okně Události vyberte staré předplatné události založené na ngroku a vyberte Odstranit>uložit. Tato akce odebere staré odběry událostí.

  4. 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 myBlobAzureEventSub 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.
    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. Azure Functions byste použili pro trigger Event Gridu.
    Endpoint Váš nový koncový bod adresy URL založený na 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. Vyberte kartu Filtry, v části Filtry předmětu zaškrtněte políčko Povolit filtrování předmětu, typ .jpgPředmět končí na. Tato akce filtruje události pouze na soubory JPEG.

    Add filter

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

Ověření funkce v Azure

S celou topologií, která teď běží v Azure, je čas ověřit, že všechno funguje správně. Vzhledem k tomu, že už jste na portálu, je nejjednodušší nahrát soubor z něj.

  1. Na stránce účtu úložiště na portálu vyberte Kontejnery a vyberte kontejner samples-workitems .

  2. Výběrem tlačítka Nahrát otevřete stránku pro nahrání vpravo, přejděte do místního systému souborů, vyhledejte .jpg soubor, který chcete nahrát, a pak výběrem tlačítka Nahrát nahrajte objekt blob. Teď můžete ověřit, že vaše funkce běžela na základě události nahrání kontejneru.

  3. V účtu úložiště se vraťte na stránku Události , vyberte Odběry událostí a měli byste vidět, že byla událost doručena.

  4. Zpátky na stránce vaší aplikace funkcí na portálu v části Funkce vyberte Funkce, zvolte svou funkci a měli byste vidět celkový počet spuštění alespoň jednoho.

  5. V části Vývojář vyberte Možnost Sledovat a měli byste vidět trasování napsaná z úspěšných spuštění funkcí. Při zpracování událostí Přehledy aplikací může docházet k pětiminutové prodlevě.

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ů.

    Screenshot of select the resource group to delete from the function app page.

  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