Dela via


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

Tidigare versioner av Azure Functions Blob Storage-utlösaren avsöker lagringscontainern efter ändringar. Den senaste versionen av Blob Storage-tillägget (5.x+) använder i stället en Event Grid-händelseprenumeration på containern. Den här händelseprenumerationen minskar svarstiden genom att utlösa funktionen direkt när ändringar sker i den prenumererade containern.

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 verifiera koden innan du distribuerar projektet till Azure.

  • Skapa en händelsebaserad Blob Storage-utlöst funktion i ett nytt projekt.
  • Verifiera lokalt i Visual Studio Code med hjälp av Azurite-emulatorn.
  • Skapa en bloblagringscontainer i ett nytt lagringskonto i Azure.
  • Skapa en funktionsapp i Flex Consumption-planen (förhandsversion).
  • Skapa en händelseprenumeration till den nya blobcontainern.
  • Distribuera och verifiera din funktionskod i Azure.

Den här artikeln stöder version 4 av Node.js programmeringsmodellen för Azure Functions.

Den här artikeln stöder version 2 av Python-programmeringsmodellen för Azure Functions.

Den här artikeln skapar en C#-app som körs i isolerat arbetsläge, som stöder .NET 8.0.

Viktigt!

I den här självstudien använder du Flex Consumption-planen, som för närvarande är i förhandsversion. Flex Consumption-planen stöder endast den händelsebaserade versionen av Blob Storage-utlösaren. Du kan slutföra den här självstudien med hjälp av andra värdplaner för din funktionsapp.

Förutsättningar

Kommentar

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

Skapa en blobutlöst funktion

När du skapar en Blob Storage-utlösarfunktion 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. Tryck på F1 för att öppna kommandopaletten, 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 8.0 Isolated LTS.
    Välj en mall för projektets första funktion Välj Azure Blob Storage trigger (using Event Grid).
    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 prenumeration Välj din prenumeration.
    Välj ett lagringskonto Använd Azurite-emulatorn för lokal lagring.
    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 (using Event Grid).
    Ange ett funktionsnamn Ange BlobTriggerEventGrid.
    Välj inställning från "local.settings.json" Välj Create new local app setting.
    Välj prenumeration Välj din prenumeration.
    Välj ett lagringskonto Använd Azurite-emulatorn för lokal lagring.
    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 (using Event Grid).
    Ange ett funktionsnamn Ange BlobTriggerEventGrid.
    Välj inställning från "local.settings.json" Välj Create new local app setting.
    Välj prenumeration Välj din prenumeration.
    Välj ett lagringskonto Använd Azurite-emulatorn för lokal lagring.
    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 (using Event Grid).
    Ange ett funktionsnamn Ange BlobTriggerEventGrid.
    Välj inställning från "local.settings.json" Välj Create new local app setting.
    Välj prenumeration Välj din prenumeration.
    Välj ett lagringskonto Använd Azurite-emulatorn för lokal lagring.
    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 (using Event Grid).
    Ange ett funktionsnamn Ange BlobTriggerEventGrid.
    Välj inställning från "local.settings.json" Välj Create new local app setting.
    Välj prenumeration Välj din prenumeration.
    Välj ett lagringskonto Använd Azurite-emulatorn för lokal lagring.
    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.

Uppgradera lagringstillägget

Om du vill använda den Event Grid-baserade Blob Storage-utlösaren måste du ha minst version 5.x av Azure Functions Storage-tillägget.

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

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

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

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

Förbereda lokal lagringsemulering

Visual Studio Code använder Azurite för att emulera Azure Storage-tjänster när de körs lokalt. Du använder Azurite för att emulera Azure Blob Storage-tjänsten under lokal utveckling och testning.

  1. Om du inte redan har gjort det installerar du Azurite v3-tillägget för Visual Studio Code.

  2. Kontrollera att local.settings.json-filen har "UseDevelopmentStorage=true" angetts för , som talar om för AzureWebJobsStorageCore Tools att använda Azurite i stället för en verklig anslutning till lagringskontot när den körs lokalt.

  3. Tryck på F1 för att öppna kommandopaletten, skriv Azurite: Start Blob Serviceoch tryck på Retur, som startar Azurite Blob Storage-tjänstemulatorn.

  4. Välj Azure-ikonen i aktivitetsfältet, expandera Lokal emulator för anslutna lagringskonton>för arbetsyta>, högerklicka på Blobcontainrar, välj Skapa blobcontainer..., ange namnet samples-workitemsoch tryck på Retur.

    Skärmbild som visar hur du väljer Skapa blobcontainer i den lokala emuleringen i Visual Studio Code.

  5. Expandera Blob Containers>samples-workitems och välj Ladda upp filer....

    Skärmbild som visar hur du väljer Ladda upp filer i containern samples-workitems i lokal emulering i Visual Studio Code.

  6. Välj en fil som ska laddas upp till den lokalt emulerade containern. Den här filen bearbetas senare av funktionen för att verifiera och felsöka funktionskoden. En textfil kan fungera bäst med mallkoden blobutlösare.

Kör funktionen lokalt

Med en fil i emulerad lagring kan du köra funktionen för att simulera en händelse som genereras av en Event Grid-prenumeration. Händelseinformationen som skickas till utlösaren beror på vilken fil du har lagt till i den lokala containern.

  1. Ange brytpunkter och tryck på F5 för att starta projektet för lokal felsökning. Azure Functions Core Tools ska köras i terminalfönstret.

  2. I Azure-området expanderar du Lokala projektfunktioner> för arbetsyta>, högerklickar på funktionen och väljer Kör funktion nu....

    Skärmbild som visar hur du väljer knappen Kör funktion nu från funktionen i den lokala projektarbetsytan i Visual Studio Code.

  3. I dialogrutan begärandetext skriver du samples-workitems/<TEST_FILE_NAME>och ersätter <TEST_FILE_NAME> med namnet på filen som du laddade upp i den lokala lagringsemulatorn.

  4. Tryck på Retur för att köra funktionen. Värdet du angav är sökvägen till din blob i den lokala emulatorn. Den här strängen skickas till utlösaren i nyttolasten för begäran, som simulerar nyttolasten när en händelseprenumeration anropar funktionen för att rapportera att en blob läggs till i containern.

  5. Granska utdata från den här funktionskörningen. I utdata bör du se namnet på filen och dess innehåll loggat. Om du anger brytpunkter kan du behöva fortsätta körningen.

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

Förbereda Azure Storage-kontot

Händelseprenumerationer till Azure Storage kräver ett allmänt v2-lagringskonto. Du kan använda Azure Storage-tillägget för Visual Studio Code för att skapa det här lagringskontot.

  1. I Visual Studio Code trycker du på F1 igen för att öppna kommandopaletten och ange Azure Storage: Create Storage Account.... Ange den här informationen när du uppmanas att göra följande:

    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. Event Grid-baserad Blob Storage-utlösare kräver ett allmänt v2-lagringskonto.

  2. Tryck på F1 igen och i kommandopaletten anger du Azure Storage: Create Blob Container.... Ange den här informationen när du uppmanas att göra följande:

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

Funktionsappen behöver också ett lagringskonto för att köras. För enkelhetens skull använder den här självstudien samma lagringskonto för blobutlösaren och funktionsappen. 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.

Skapa funktionsappen

Använd de här stegen för att skapa en funktionsapp i Flex Consumption-planen. När appen finns i en Flex Consumption-plan måste Blob Storage-utlösare använda händelseprenumerationer.

  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 -.
    Välj en värdplan. Välj Flex-förbrukning (förhandsversion).
    Välj en körningsstack. Välj den språkstack och version som du har kört lokalt på.
    Välj en resursgrupp för nya resurser. Välj den befintliga resursgrupp där du skapade lagringskontot.
    Välj en plats för nya resurser. Välj en plats i en region som stöds nära dig eller nära andra tjänster som dina funktioner har åtkomst till. Regioner som inte stöds visas inte. Mer information finns i Visa regioner som stöds för närvarande.
    Välj ett lagringskonto. Välj namnet på lagringskontot som du skapade.
    Välj en Application Insights-resurs för din app. Välj Skapa ny Application Insights-resurs och ange i prompten namnet på den instans som används för att lagra körningsdata från dina funktioner.

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

Distribuera din funktionskod

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.

    Skärmbild av fönstret Visa utdata.

Uppdatera programinställningar

Eftersom nödvändiga programinställningar från filen inte publiceras automatiskt måste du ladda upp dem till funktionsappen local.settings.json så att funktionen körs korrekt i Azure.

  1. I kommandopaletten anger du Azure Functions: Download Remote Settings..., och i kommandotolken Välj en resurs väljer du namnet på funktionsappen.

  2. När du uppmanas att AzureWebJobsStorage inställningen redan finns väljer du Ja för att skriva över inställningen för den lokala emulatorn med det faktiska lagringskontot anslutningssträng från Azure.

  3. local.settings.json I filen ersätter du den lokala emulatorinställningen med samma anslutningssträng som används förAzureWebJobsStorage.

  4. Ta bort posten FUNCTIONS_WORKER_RUNTIME , som inte stöds i en Flex Consumption-plan.

  5. I kommandopaletten anger du Azure Functions: Upload Local Settings..., och i kommandotolken Välj en resurs väljer du namnet på funktionsappen.

Nu delar både Functions-värden och utlösaren samma lagringskonto.

Skapa slutpunkts-URL:en

Om du vill skapa en händelseprenumeration måste du ange Event Grid med URL:en för den specifika slutpunkten för att rapportera Blob Storage-händelser. Url :en för blobtillägget består av följande delar:

Delvis Exempel
Url för basfunktionsapp https://<FUNCTION_APP_NAME>.azurewebsites.net
Blobspecifik sökväg /runtime/webhooks/blobs
Frågesträng för funktion ?functionName=Host.Functions.BlobTriggerEventGrid
Åtkomstnyckel för Blob-tillägg &code=<BLOB_EXTENSION_KEY>

Åtkomstnyckeln för blobtillägget är utformad för att göra det svårare för andra att komma åt slutpunkten för blobtillägget. Så här fastställer du åtkomstnyckeln för blobtillägget:

  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 inkluderar det här värdet i frågesträngen för den nya slutpunkts-URL:en.

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

    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ängsvärdet functionName till funktionsnamnet.

Nu kan du använda den här slutpunkts-URL:en för att skapa en händelseprenumeration.

Skapa händelseprenumerationen

En händelseprenumeration, som drivs av Azure Event Grid, genererar händelser baserat på ändringar i den prenumerationsbaserade blobcontainern. Den här händelsen skickas sedan till blobtilläggets slutpunkt för din funktion. När du har skapat en händelseprenumeration kan du inte uppdatera slutpunkts-URL:en.

  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.

    Lägg till lagringskontohändelse

  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 myBlobEventSub 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.
    Slutpunkt Din 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 Skapa för att skapa händelseprenumerationen.

Ladda upp en fil till containern

Du kan ladda upp en fil från datorn till bloblagringscontainern med hjälp av Visual Studio Code.

  1. I Visual Studio Code trycker du på F1 för att öppna kommandopaletten och skriver Azure Storage: Upload Files....

  2. I dialogrutan Öppna väljer du en fil, helst en textfil, och väljer Ladda upp .

  3. Ange följande information i meddelanderutorna:

    Inställning Föreslaget värde beskrivning
    Ange målkatalogen för den här uppladdningen standard Acceptera bara standardvärdet /för , som är containerroten.
    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.

Bläddra i det lokala filsystemet för att hitta en fil som ska laddas upp och välj sedan knappen Ladda upp för att ladda upp filen.

Verifiera funktionen i Azure

Nu när du har laddat upp en fil till containern samples-workitems ska funktionen utlösas. Du kan verifiera genom att kontrollera följande på Azure-portalen:

  1. I ditt lagringskonto går du till sidan Händelser , väljer Händelseprenumerationer och du bör se att en händelse har levererats. Det kan uppstå en fördröjning på fem minuter för händelsen att visas i diagrammet.

  2. Tillbaka på funktionsappsidan i portalen hittar du funktionen under Funktioner och väljer anrop med mera. Du bör se spårningar som skrivits från den lyckade funktionskörningen.

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.

    Skärmbild av välj den resursgrupp som ska tas bort från funktionsappsidan.

  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