Självstudie: Utlösa Azure Functions på blobcontainrar med en händelseprenumeration

Om du använder tidigare versioner av Blob Storage-utlösaren med Azure Functions får du ofta fördröjda körningar eftersom utlösaren söker efter uppdateringar i blobcontainern. Du kan minska svarstiden genom att utlösa funktionen med hjälp av en händelseprenumeration till samma container. Händelseprenumerationen använder Event Grid-infrastrukturen för att vidarebefordra ändringar i containern när de inträffar. Du kan implementera den här funktionen med hjälp av de senaste Azure Functions-tilläggen.

Den här artikeln visar hur du skapar en funktion som körs baserat på händelser som genereras när en blob läggs till i en container. Du använder Visual Studio Code för lokal utveckling och för att kontrollera att funktionen fungerar lokalt innan du distribuerar projektet till Azure.

  • Skapa ett allmänt storage v2-konto i Azure Storage.
  • Skapa en container i Blob Storage.
  • Skapa en händelsedriven Blob Storage-utlöst funktion.
  • Skapa en händelseprenumeration på en blobcontainer.
  • Felsöka lokalt med ngrok genom att ladda upp filer.
  • Distribuera till Azure och skapa en filtrerad händelseprenumeration.

Viktigt!

Den här artikeln använder flikar för att stödja flera versioner av Node.js programmeringsmodellen. V4-modellen är allmänt tillgänglig och är utformad för att ha en mer flexibel och intuitiv upplevelse för JavaScript- och TypeScript-utvecklare. Mer information om hur v4-modellen fungerar finns i utvecklarguiden för Azure Functions Node.js. Mer information om skillnaderna mellan v3 och v4 finns i migreringsguiden.

Förutsättningar

  • Ngrok-verktyget, som tillhandahåller ett sätt för Azure att anropa till din lokalt aktiva funktion.

  • Azure Storage-tillägget för Visual Studio Code, minimal version 5.x.

Kommentar

Azure Storage-tillägget för Visual Studio Code är för närvarande i förhandsversion.

Skapa ett lagringskonto

Om du vill använda en händelseprenumeration med Azure Storage behöver du ett allmänt v2-lagringskonto. Som standard kan du skapa det här lagringskontot från ditt Visual Studio Code-projekt när du har Azure Storage-tillägget installerat.

  1. I Visual Studio Code öppnar du kommandopaletten (tryck på F1) och anger Azure Storage: Create Storage Account.... Ange följande information vid anvisningarna:

    Prompt Åtgärd
    Ange namnet på det nya lagringskontot Ange ett globalt unikt namn. Lagringskontonamn måste innehålla mellan 3 och 24 tecken med endast gemener och siffror. För enklare identifiering använder vi samma namn för resursgruppen och funktionsappens namn.
    Välj en plats för nya resurser För bättre prestanda väljer du en region nära dig.

    Tillägget skapar ett v2-lagringskonto för generell användning med det namn du angav. Samma namn används också för den resursgrupp som innehåller lagringskontot.

  2. När du har skapat lagringskontot öppnar du kommandopaletten (tryck på F1) och anger Azure Storage: Create Blob Container.... Ange följande information vid anvisningarna:

    Prompt Åtgärd
    Välj en resurs Välj det lagringskonto som du skapade.
    Ange ett namn för den nya blobcontainern Ange samples-workitems, som är det containernamn som refereras till i kodprojektet.

Nu när du har skapat blobcontainern kan du skapa både den funktion som utlöses i den här containern och händelseprenumerationen som levererar händelser till din funktion.

Skapa en blobutlöst funktion

När du skapar en Blob Storage-utlöst funktion med Visual Studio Code skapar du också ett nytt projekt. Du måste redigera funktionen för att använda en händelseprenumeration som källa i stället för att använda den vanliga avsökningscontainern.

  1. Öppna funktionsappen i Visual Studio Code.

  2. Öppna kommandopaletten (tryck på F1), ange Azure Functions: Create Function...och välj Skapa nytt projekt.

  3. För projektarbetsytan väljer du katalogplatsen. Se till att du antingen skapar en ny mapp eller väljer en tom mapp för projektarbetsytan.

    Välj inte en projektmapp som redan är en del av en arbetsyta.

  4. Ange följande information vid anvisningarna:

    Prompt Åtgärd
    Välj ett språk Välj C#.
    Välj en .NET-körning Välj .NET 6.0 Isolated LTS för att köra i en isolerad arbetsprocess eller .NET 6.0 LTS för pågående.
    Välj en mall för projektets första funktion Välj Azure Blob Storage trigger.
    Ange ett funktionsnamn Ange BlobTriggerEventGrid.
    Ange ett namnområde Ange My.Functions.
    Välj inställning från "local.settings.json" Välj Create new local app setting.
    Välj ett lagringskonto Välj det lagringskonto som du skapade i listan.
    Det här är sökvägen i ditt lagringskonto som utlösaren övervakar Acceptera standardvärdet samples-workitems.
    Välj hur du vill öppna projektet Välj Open in current window.
    Prompt Åtgärd
    Välj ett språk Välj Python.
    Välj en Python-tolk för att skapa en virtuell miljö Välj den Python-tolk du föredrar. Om ett alternativ inte visas anger du den fullständiga sökvägen till din Python-binärfil.
    Välj en mall för projektets första funktion Välj Azure Blob Storage trigger.
    Ange ett funktionsnamn Ange BlobTriggerEventGrid.
    Välj inställning från "local.settings.json" Välj Create new local app setting.
    Välj ett lagringskonto Välj det lagringskonto som du skapade i listan.
    Det här är sökvägen i ditt lagringskonto som utlösaren övervakar Acceptera standardvärdet samples-workitems.
    Välj hur du vill öppna projektet Välj Open in current window.
    Prompt Åtgärd
    Välj ett språk Välj Java.
    Välj en version av Java Välj Java 11 eller Java 8, den Java-version som dina funktioner körs på i Azure och som du har verifierat lokalt.
    Ange ett grupp-ID Välj com.function.
    Ange ett artefakt-ID Välj BlobTriggerEventGrid.
    Ange en version Välj 1.0-SNAPSHOT.
    Ange ett paketnamn Välj com.function.
    Ange ett appnamn Acceptera det genererade namnet från och med BlobTriggerEventGrid.
    Välj byggverktyget för Java-projektet Välj Maven.
    Välj hur du vill öppna projektet Välj Open in current window.
    Prompt Åtgärd
    Välj ett språk för funktionsprojektet Välj TypeScript.
    Välj en TypeScript-programmeringsmodell Välj Model V4.
    Välj en mall för projektets första funktion Välj Azure Blob Storage trigger.
    Ange ett funktionsnamn Ange BlobTriggerEventGrid.
    Välj inställning från "local.settings.json" Välj Create new local app setting.
    Välj ett lagringskonto Välj det lagringskonto som du skapade.
    Det här är sökvägen i ditt lagringskonto som utlösaren övervakar Acceptera standardvärdet samples-workitems.
    Välj hur du vill öppna projektet Välj Open in current window.
    Prompt Åtgärd
    Välj ett språk för funktionsprojektet Välj JavaScript.
    Välj en JavaScript-programmeringsmodell Välj Model V4.
    Välj en mall för projektets första funktion Välj Azure Blob Storage trigger.
    Ange ett funktionsnamn Ange BlobTriggerEventGrid.
    Välj inställning från "local.settings.json" Välj Create new local app setting.
    Välj ett lagringskonto Välj det lagringskonto som du skapade.
    Det här är sökvägen i ditt lagringskonto som utlösaren övervakar Acceptera standardvärdet samples-workitems.
    Välj hur du vill öppna projektet Välj Open in current window.
    Prompt Åtgärd
    Välj ett språk för funktionsprojektet Välj PowerShell.
    Välj en mall för projektets första funktion Välj Azure Blob Storage trigger.
    Ange ett funktionsnamn Ange BlobTriggerEventGrid.
    Välj inställning från "local.settings.json" Välj Create new local app setting.
    Välj ett lagringskonto Välj det lagringskonto som du skapade.
    Det här är sökvägen i ditt lagringskonto som utlösaren övervakar Acceptera standardvärdet samples-workitems.
    Välj hur du vill öppna projektet Välj Open in current window.
  5. När kommandotolken visas väljer du Välj lagringskonto>Lägg till i arbetsytan.

För enkelhetens skull återanvänder den här självstudien samma lagringskonto med din funktionsapp. Men i produktion kanske du vill använda ett separat lagringskonto med din funktionsapp. Mer information finns i Lagringsöverväganden för Azure Functions.

Uppgradera lagringstillägget

Om du vill använda den Event Grid-baserade Blob Storage-utlösaren kräver funktionen minst version 5.x för lagringstillägget.

Om du vill uppgradera projektet med den tilläggsversion som krävs kör du följande kommando i terminalfönstret: dotnet add package

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs --version 6.1.0
  1. Öppna host.json-projektfilen och inspektera elementet extensionBundle .

  2. Om extensionBundle.version inte är minst 3.3.0 ersätter du extensionBundle med den senaste:

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

Uppdatera funktionen för att använda händelser

I filen BlobTriggerEventGrid.cs lägger du till Source = BlobTriggerSource.EventGrid parametrarna för blobutlösarattributet, till exempel:

[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");
}

När du har skapat funktionen lägger du till "source": "EventGrid" bindningen i function.json-konfigurationsfilen myBlob , till exempel:

{
  "scriptFile": "__init__.py",
  "bindings": [
    {
      "name": "myblob",
      "type": "blobTrigger",
      "direction": "in",
      "path": "samples-workitems/{name}",
      "source": "EventGrid",
      "connection": "<NAMED_STORAGE_CONNECTION>"
    }
  ]
}
  1. I den genererade Function.java filen ersätter du innehållet med följande kod och byter namn på filen till 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. Ta bort den associerade enhetstestfilen, som inte längre gäller för den nya utlösartypen.

När du har skapat funktionen lägger du till source: "EventGrid" objektet options i TypeScript-filen, till exempel:

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,
});

När du har skapat funktionen lägger du till source: "EventGrid" objektet options i JavaScript-filen, till exempel:

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`
        );
    },
});

När du har skapat funktionen lägger du till "source": "EventGrid" bindningen i function.json-konfigurationsfilen myBlob , till exempel:

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

Starta lokal felsökning

Event Grid validerar slutpunkts-URL:en när du skapar en händelseprenumeration i Azure-portalen. Den här valideringen innebär att innan du kan skapa en händelseprenumeration för lokal felsökning måste funktionen köras lokalt med fjärråtkomst aktiverad av ngrok-verktyget. Om din lokala funktionskod inte körs och är tillgänglig för Azure kan du inte skapa händelseprenumerationen.

Fastställa slutpunkten för blobutlösaren

När funktionen körs lokalt ser standardslutpunkten som används för en händelsedriven bloblagringsutlösare ut som följande URL:

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

Spara den här sökvägen, som du använder senare för att skapa slutpunkts-URL:er för händelseprenumerationer. Om du använde ett annat namn för din Blob Storage-utlösta funktion måste du ändra functionName värdet i frågesträngen.

Kommentar

Eftersom slutpunkten hanterar händelser för en Blob Storage-utlösare innehåller blobsslutpunktssökvägen . Slutpunkts-URL:en för en Event Grid-utlösare skulle i stället ha eventgrid i sökvägen.

Kör ngrok

Om du vill bryta dig in i en funktion som debuggas på datorn måste du tillhandahålla ett sätt för Azure Event Grid att kommunicera med funktioner som körs på den lokala datorn.

Ngrok-verktyget vidarebefordrar externa begäranden till en slumpmässigt genererad proxyserveradress till en specifik adress och port på den lokala datorn. genom att anropa webhookens slutpunkt för funktionen som körs på datorn.

  1. Starta ngrok med följande kommando:

    ngrok.exe http http://localhost:7071
    

    När verktyget startar bör kommandofönstret se ut ungefär så här:

    Screenshot that shows the Command Prompt after starting the

  2. Kopiera HTTPS-URL:en som genereras när ngrok körs. Det här värdet används för att fastställa webhooksslutpunkten på datorn som exponeras med ngrok.

Viktigt!

Stoppa inte ngroki det här läget. Varje gång du startar ngrokåterskapas HTTPS-URL:en med ett annat värde. Eftersom slutpunkten för en händelseprenumeration inte kan ändras måste du skapa en ny händelseprenumeration varje gång du kör ngrok.

Om du inte skapar ett ngrok-konto är den maximala ngrok-sessionstiden begränsad till två timmar.

Skapa slutpunkts-URL:en

Slutpunkten som används i händelseprenumerationen består av tre olika delar, ett prefixat servernamn, en sökväg och en frågesträng. I följande tabell beskrivs dessa delar:

URL-del beskrivning
Prefix och servernamn När funktionen körs lokalt kommer servernamnet med ett https:// prefix från vidarebefordran-URL:en som genereras av ngrok. I localhost-URL:en ersätter http://localhost:7071ngrok-URL:en . När du kör i Azure använder du i stället den publicerade funktionsappservern, som vanligtvis finns i formuläret https://<FUNCTION_APP_NAME>.azurewebsites.net.
Sökväg Sökvägsdelen av slutpunkts-URL:en kommer från den localhost-URL som kopierats tidigare och ser ut som /runtime/webhooks/blobs för en Blob Storage-utlösare. Sökvägen för en Event Grid-utlösare skulle vara /runtime/webhooks/EventGrid
Frågesträng För alla språk inklusive .NET Isolerad parametern functionName=Host.Functions.BlobTriggerEventGrid , förutom .NET In-process som ska finnas functionName=BlobTriggerEventGrid i frågesträngen anger namnet på den funktion som hanterar händelsen. Om du har använt ett annat namn för funktionen måste du ändra det här värdet. En åtkomstnyckel krävs inte när du kör lokalt. När du kör i Azure måste du också inkludera en code= parameter i URL:en, som innehåller en nyckel som du kan hämta från portalen.

Följande skärmbild visar ett exempel på hur den slutliga slutpunkts-URL:en ska se ut när du använder en Blob Storage-utlösare med namnet BlobTriggerEventGrid:

Endpoint selection

Börja felsöka

När ngrok redan körs startar du det lokala projektet på följande sätt:

  1. Ange en brytpunkt i funktionen på raden som hanterar loggning.

  2. Starta en felsökningssession.

    Öppna en ny terminal och kör följande mvn kommando för att starta felsökningssessionen.

    mvn azure-functions:run -DenableDebug
    

    Tryck på F5 för att starta en felsökningssession.

När koden körs och ngrok vidarebefordrar begäranden är det dags att skapa en händelseprenumeration till blobcontainern.

Skapa händelseprenumerationen

En händelseprenumeration, som drivs av Azure Event Grid, genererar händelser baserat på ändringar i den länkade blobcontainern. Den här händelsen skickas sedan till webhooksslutpunkten på funktionens utlösare. När en händelseprenumeration har skapats kan slutpunkts-URL:en inte ändras. Det innebär att när du är klar med lokal felsökning (eller om du startar om ngrok) måste du ta bort och återskapa händelseprenumerationen.

  1. I Visual Studio Code väljer du Azure-ikonen i aktivitetsfältet. I Resurser expanderar du din prenumeration, expanderar Lagringskonton, högerklickar på det lagringskonto som du skapade tidigare och väljer Öppna i portalen.

  2. Logga in på Azure-portalen och anteckna resursgruppen för ditt lagringskonto. Du skapar dina andra resurser i samma grupp för att göra det enklare att rensa resurser när du är klar.

  3. välj alternativet Händelser på den vänstra menyn.

    Add storage account event

  4. I fönstret Händelser väljer du knappen + Händelseprenumeration och anger värden från följande tabell på fliken Grundläggande :

    Inställning Föreslaget värde Description
    Namn myBlobLocalNgrokEventSub Namn som identifierar händelseprenumerationen. Du kan använda namnet för att snabbt hitta händelseprenumerationen.
    Händelseschema Event Grid-schema Använd standardschemat för händelser.
    Systemämnesnamn samples-workitems-blobs Namn på ämnet, som representerar containern. Ämnet skapas med den första prenumerationen och du använder det för framtida händelseprenumerationer.
    Filtrera efter händelsetyper Blob skapades
    Slutpunktstyp Webbkrok Bloblagringsutlösaren använder en webbkrokslutpunkt. Du skulle använda Azure Functions för en Event Grid-utlösare.
    Slutpunkt Din ngrok-baserade URL-slutpunkt Använd den ngrokbaserade URL-slutpunkten som du fastställde tidigare.
  5. Välj Bekräfta markeringen för att verifiera slutpunkts-URL:en.

  6. Välj Skapa för att skapa händelseprenumerationen.

Ladda upp en fil till containern

När händelseprenumerationen är på plats och kodprojektet och ngrok fortfarande körs kan du nu ladda upp en fil till lagringscontainern för att utlösa funktionen. Du kan ladda upp en fil från datorn till bloblagringscontainern med hjälp av Visual Studio Code.

  1. I Visual Studio Code öppnar du kommandopaletten (tryck på F1) och skriver Azure Storage: Upload Files....

  2. I dialogrutan Öppna väljer du en fil, helst en binär bildfil som inte är för stor, och väljer Ladda upp .

  3. Ange följande information i meddelanderutorna:

    Inställning Föreslaget värde beskrivning
    Välj en resurs Lagringskontonamn Välj namnet på lagringskontot som du skapade i ett tidigare steg.
    Välj en resurstyp Blobcontainrar Du laddar upp till en blobcontainer.
    Välj blobcontainer samples-workitems Det här värdet är namnet på containern som du skapade i ett tidigare steg.
    Ange målkatalogen för den här uppladdningen standard Acceptera bara standardvärdet /för , som är containerroten.

Det här kommandot laddar upp en fil från datorn till lagringscontainern i Azure. Nu bör din ngrok-instans som körs rapportera att en begäran vidarebefordrades. Du ser också i func.exe utdata för felsökningssessionen att funktionen har startats. Förhoppningsvis väntar felsökningssessionen på dig där du anger brytpunkten.

Publicera projektet på Azure

Nu när du har verifierat funktionskoden lokalt är det dags att publicera projektet till en ny funktionsapp i Azure.

Skapa funktionsappen

Följande steg skapar de resurser du behöver i Azure och distribuerar dina projektfiler.

  1. I kommandopaletten anger du Azure Functions: Skapa funktionsapp i Azure... (Avancerat).

  2. Ange följande information genom att följa anvisningarna:

    Prompt Urval
    Ange ett globalt unikt namn för den nya funktionsappen. Ange ett globalt unikt namn som identifierar din nya funktionsapp och välj sedan Retur. Giltiga tecken i ett namn på en funktionsapp är a-z, 0-9 och -. Skriv ned det här namnet; du behöver den senare när du skapar den nya slutpunkts-URL:en.
    Välj en körningsstack. Välj den språkversion som du har kört lokalt på.
    Välj ett operativsystem. Välj antingen Linux eller Windows. Python-appar måste köras på Linux.
    Välj en resursgrupp för nya resurser. Välj namnet på den resursgrupp som du skapade med ditt lagringskonto, som du tidigare antecknade i portalen.
    Välj en plats för nya resurser. Välj en plats i en region nära dig eller nära andra tjänster som dina funktioner har åtkomst till.
    Välj en värdplan. Välj Förbrukning för serverlös förbrukningsplan, där du bara debiteras när dina funktioner körs.
    Välj ett lagringskonto. Välj namnet på det befintliga lagringskonto som du har använt.
    Välj en Application Insights-resurs för din app. Välj Skapa ny Application Insights-resurs och ange ett namn på den instans som används för att lagra körningsdata från dina funktioner i prompten.

    Ett meddelande visas när funktionsappen har skapats och distributionspaketet har tillämpats. Välj Visa utdata i det här meddelandet för att visa skapande- och distributionsresultatet, inklusive de Azure-resurser som du skapade.

Distribuera funktionskoden

Viktigt!

Distribution till en befintlig funktionsapp skriver alltid över innehållet i appen i Azure.

  1. I området Resurser i Azure-aktiviteten letar du upp den funktionsappresurs som du nyss skapade, högerklickar på resursen och väljer Distribuera till funktionsapp....

  2. När du uppmanas att skriva över tidigare distributioner väljer du Distribuera för att distribuera funktionskoden till den nya funktionsappresursen.

  3. När distributionen är klar väljer du Visa utdata för att visa skapande- och distributionsresultatet, inklusive de Azure-resurser som du skapade. Om du missar meddelandet väljer du klockikonen i det nedre högra hörnet för att se det igen.

    Screenshot of the View Output window.

Publicera programinställningar

Eftersom de lokala inställningarna från local.settings.json inte publiceras automatiskt måste du ladda upp dem nu så att funktionen körs korrekt i Azure.

I kommandopaletten anger du Azure Functions: Upload Local Inställningar... (Ladda upp lokala Inställningar...) och i kommandotolken Välj en resurs. välj namnet på funktionsappen.

Återskapa händelseprenumerationen

Nu när funktionsappen körs i Azure måste du skapa en ny händelseprenumeration. Den här nya händelseprenumerationen använder slutpunkten för din funktion i Azure. Du lägger också till ett filter i händelseprenumerationen så att funktionen bara utlöses när JPEG-filer (.jpg) läggs till i containern. I Azure innehåller slutpunkts-URL:en också en åtkomstnyckel som hjälper till att blockera andra aktörer än Event Grid från att komma åt slutpunkten.

Hämta blobtilläggsnyckeln

  1. I Visual Studio Code väljer du Azure-ikonen i aktivitetsfältet. I Resurser expanderar du din prenumeration, expanderar Funktionsapp, högerklickar på funktionsappen som du skapade och väljer Öppna i portalen.

  2. Under Funktioner i den vänstra menyn väljer du Appnycklar.

  3. Under Systemnycklar väljer du nyckeln med namnet blobs_extension och kopierar nyckeln Värde.

Du tar med det här värdet i frågesträngen för den nya slutpunkts-URL:en.

Skapa slutpunkts-URL:en

Skapa en ny slutpunkts-URL för Blob Storage-utlösaren baserat på följande exempel:

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>

I det här exemplet ersätter <FUNCTION_APP_NAME> du med namnet på funktionsappen och ersätter <BLOB_EXTENSION_KEY> med det värde som du fick från portalen. Om du har använt ett annat namn för funktionen måste du också ändra frågesträngen functionName efter behov.

Skapa en filtrerad händelseprenumeration

Eftersom slutpunkts-URL:en för en händelseprenumeration inte kan ändras måste du skapa en ny händelseprenumeration. Du bör också ta bort den gamla händelseprenumerationen just nu, eftersom den inte kan återanvändas.

Den här gången ska du inkludera filtret för händelseprenumerationen så att endast JPEG-filer (*.jpg) utlöser funktionen.

  1. I Visual Studio Code väljer du Azure-ikonen i aktivitetsfältet. I Resurser expanderar du din prenumeration, expanderar Lagringskonton, högerklickar på det lagringskonto som du skapade tidigare och väljer Öppna i portalen.

  2. I Azure-portalen väljer du alternativet Händelser på den vänstra menyn.

  3. I fönstret Händelser väljer du din gamla ngrokbaserade händelseprenumeration och väljer Ta bort>Spara. Den här åtgärden tar bort den gamla händelseprenumerationen.

  4. Välj knappen + Händelseprenumeration och ange värden från följande tabell på fliken Grundläggande:

    Inställning Föreslaget värde Description
    Namn myBlobAzureEventSub Namn som identifierar händelseprenumerationen. Du kan använda namnet för att snabbt hitta händelseprenumerationen.
    Händelseschema Event Grid-schema Använd standardschemat för händelser.
    Filtrera efter händelsetyper Blob skapades
    Slutpunktstyp Webbkrok Bloblagringsutlösaren använder en webbkrokslutpunkt. Du skulle använda Azure Functions för en Event Grid-utlösare.
    Slutpunkt Din nya Azure-baserade URL-slutpunkt Använd URL-slutpunkten som du skapade, som innehåller nyckelvärdet.
  5. Välj Bekräfta markeringen för att verifiera slutpunkts-URL:en.

  6. Välj fliken Filter. Under Ämnesfilter markerar du Aktivera ämnesfiltrering, skriver .jpg in Ämne slutar med. Detta filtrerar händelser till endast JPEG-filer.

    Add filter

  7. Välj Skapa för att skapa händelseprenumerationen.

Verifiera funktionen i Azure

När hela topologin nu kör Azure är det dags att kontrollera att allt fungerar korrekt. Eftersom du redan är i portalen är det enklast att bara ladda upp en fil därifrån.

  1. På sidan för lagringskontot i portalen väljer du Containrar och väljer containern samples-workitems .

  2. Välj knappen Ladda upp för att öppna uppladdningssidan till höger, bläddra i ditt lokala filsystem för att hitta en .jpg fil att ladda upp och välj sedan knappen Ladda upp för att ladda upp bloben. Nu kan du kontrollera att funktionen kördes baserat på containeruppladdningshändelsen.

  3. Gå tillbaka till sidan Händelser i ditt lagringskonto, välj Händelseprenumerationer och du bör se att en händelse har levererats.

  4. Tillbaka på funktionsappsidan i portalen, under Funktioner väljer du Funktioner, väljer din funktion och du bör se ett totalt körningsantal på minst en.

  5. Under Utvecklare väljer du Övervaka och du bör se spårningar som skrivits från dina lyckade funktionskörningar. Det kan uppstå en fördröjning på fem minuter när händelser bearbetas av Application Insights.

Rensa resurser

När du fortsätter till nästa steg och lägger till en Azure Storage-köbindning till din funktion måste du behålla alla resurser på plats för att bygga vidare på det du redan har gjort.

Annars kan du använda följande steg för att ta bort funktionsappen och dess relaterade resurser för att undvika ytterligare kostnader.

  1. I Visual Studio Code trycker du på F1 för att öppna kommandopaletten. I kommandopaletten söker du efter och väljer Azure: Open in portal.

  2. Välj din funktionsapp och tryck på Retur. Funktionsappsidan öppnas i Azure-portalen.

  3. På fliken Översikt väljer du den namngivna länken bredvid Resursgrupp.

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

  4. På sidan Resursgrupp granskar du listan över inkluderade resurser och kontrollerar att det är de som du vill ta bort.

  5. Välj Ta bort resursgrupp och följ instruktionerna.

    Borttagningen kan ta några minuter. När du är färdig visas ett meddelande i några sekunder. Du kan även välja klockikonen högst upp på sidan för att se meddelandet.

Mer information om Functions-kostnader finns i Beräkna kostnader för förbrukningsplan.

Nästa steg