Zelfstudie: Azure Functions activeren in blobcontainers met behulp van een gebeurtenisabonnement

Als u eerdere versies van de Blob Storage-trigger gebruikt met Azure Functions, krijgt u vaak vertraagde uitvoeringen omdat de trigger de blobcontainer op updates peilt. U kunt latentie verminderen door uw functie te activeren met behulp van een gebeurtenisabonnement op dezelfde container. Het gebeurtenisabonnement maakt gebruik van de Event Grid-infrastructuur om wijzigingen in de container door te sturen wanneer deze zich voordoen. U kunt deze mogelijkheid implementeren met behulp van de nieuwste Azure Functions-extensies.

In dit artikel wordt beschreven hoe u een functie maakt die wordt uitgevoerd op basis van gebeurtenissen die worden gegenereerd wanneer een blob wordt toegevoegd aan een container. U gebruikt Visual Studio Code voor lokale ontwikkeling en controleert of de functie lokaal werkt voordat u uw project implementeert in Azure.

  • Maak een algemeen opslag v2-account in Azure Storage.
  • Maak een container in blobopslag.
  • Maak een door gebeurtenissen geactiveerde blobopslagfunctie.
  • Maak een gebeurtenisabonnement op een blobcontainer.
  • Fouten lokaal opsporen met behulp van ngrok door bestanden te uploaden.
  • Implementeer in Azure en maak een gefilterd gebeurtenisabonnement.

Belangrijk

In dit artikel worden tabbladen gebruikt ter ondersteuning van meerdere versies van het Node.js programmeermodel. Het v4-model is algemeen beschikbaar en is ontworpen voor een flexibelere en intuïtievere ervaring voor JavaScript- en TypeScript-ontwikkelaars. Raadpleeg de ontwikkelaarshandleiding voor Azure Functions Node.js voor meer informatie over hoe het v4-model werkt. Raadpleeg de migratiehandleiding voor meer informatie over de verschillen tussen v3 en v4.

Vereisten

Notitie

De Azure Storage-extensie voor Visual Studio Code is momenteel in preview.

Een opslagaccount maken

Als u een gebeurtenisabonnement wilt gebruiken met Azure Storage, hebt u een v2-opslagaccount voor algemeen gebruik nodig. Standaard kunt u dit opslagaccount maken vanuit uw Visual Studio Code-project wanneer u de Azure Storage-extensie hebt geïnstalleerd.

  1. Open in Visual Studio Code het opdrachtenpalet (druk op F1), enter Azure Storage: Create Storage Account.... Geef bij de prompts de volgende informatie op:

    Prompt Actie
    Voer de naam van het nieuwe opslagaccount in Geef een wereldwijd unieke naam op. Namen van opslagaccounts moeten 3 tot 24 tekens lang zijn, met alleen kleine letters en cijfers. Voor een eenvoudigere identificatie gebruiken we dezelfde naam voor de resourcegroep en de naam van de functie-app.
    Selecteer een locatie voor nieuwe resources Kies voor betere prestaties een regio bij u in de buurt.

    De extensie maakt een v2-opslagaccount voor algemeen gebruik met de naam die u hebt opgegeven. Dezelfde naam wordt ook gebruikt voor de resourcegroep die het opslagaccount bevat.

  2. Nadat u het opslagaccount hebt gemaakt, opent u het opdrachtenpalet (druk op F1) en voert u enter Azure Storage: Create Blob Container...in. Geef bij de prompts de volgende informatie op:

    Prompt Actie
    Een resource selecteren Selecteer het opslagaccount dat u hebt gemaakt.
    Voer een naam in voor de nieuwe blobcontainer Voer samples-workitemsde containernaam in waarnaar wordt verwezen in uw codeproject.

Nu u de blobcontainer hebt gemaakt, kunt u zowel de functie maken die wordt geactiveerd voor deze container als het gebeurtenisabonnement dat gebeurtenissen aan uw functie levert.

Een door blob geactiveerde functie maken

Wanneer u een door Blob Storage geactiveerde functie maakt met Visual Studio Code, maakt u ook een nieuw project. U moet de functie bewerken om een gebeurtenisabonnement als bron te gebruiken in plaats van de reguliere polled container te gebruiken.

  1. Open uw functie-app in Visual Studio Code.

  2. Open het opdrachtenpalet (druk op F1), voer in Azure Functions: Create Function...en selecteer Nieuw project maken.

  3. Selecteer de maplocatie voor uw projectwerkruimte. Zorg ervoor dat u een nieuwe map maakt of een lege map voor de projectwerkruimte kiest.

    Kies geen projectmap die al deel uitmaakt van een werkruimte.

  4. Geef bij de prompts de volgende informatie op:

    Prompt Actie
    Een taal selecteren Selecteer C#.
    Een .NET-runtime selecteren Selecteer .NET 6.0 Isolated LTS deze optie voor uitvoering in een geïsoleerd werkproces of .NET 6.0 LTS voor in-proces.
    Selecteer een sjabloon voor de eerste functie van uw project Selecteer Azure Blob Storage trigger.
    Geef een functienaam op Voer BlobTriggerEventGrid in.
    Geef een naamruimte op Voer My.Functions in.
    Instelling selecteren in 'local.settings.json' Selecteer Create new local app setting.
    Een opslagaccount selecteren Selecteer het opslagaccount dat u in de lijst hebt gemaakt.
    Dit is het pad binnen uw opslagaccount dat door de trigger wordt bewaakt Accepteer de standaardwaarde samples-workitems.
    Selecteer hoe u uw project wilt openen Selecteer Open in current window.
    Prompt Actie
    Een taal selecteren Selecteer Python.
    Een Python-interpreter selecteren om een virtuele omgeving te maken Selecteer de gewenste Python-interpreter. Als er geen optie wordt weergegeven, voert u het volledige pad naar uw binaire Python-bestand in.
    Selecteer een sjabloon voor de eerste functie van uw project Selecteer Azure Blob Storage trigger.
    Geef een functienaam op Voer BlobTriggerEventGrid in.
    Instelling selecteren in 'local.settings.json' Selecteer Create new local app setting.
    Een opslagaccount selecteren Selecteer het opslagaccount dat u in de lijst hebt gemaakt.
    Dit is het pad binnen uw opslagaccount dat door de trigger wordt bewaakt Accepteer de standaardwaarde samples-workitems.
    Selecteer hoe u uw project wilt openen Selecteer Open in current window.
    Prompt Actie
    Een taal selecteren Selecteer Java.
    Een versie van Java selecteren Selecteer Java 11 of Java 8, de Java-versie waarop uw functies worden uitgevoerd in Azure en die u lokaal hebt geverifieerd.
    Een groeps-id opgeven Selecteer com.function.
    Geef een artefact-id op Selecteer BlobTriggerEventGrid.
    Geef een versie op Selecteer 1.0-SNAPSHOT.
    Geef een pakketnaam op Selecteer com.function.
    Geef een app-naam op Accepteer de gegenereerde naam die begint met BlobTriggerEventGrid.
    Het buildhulpprogramma voor een Java-project selecteren Selecteer Maven.
    Selecteer hoe u uw project wilt openen Selecteer Open in current window.
    Prompt Actie
    Selecteer een taal voor uw functieproject Selecteer TypeScript.
    Een TypeScript-programmeermodel selecteren Selecteer Model V4.
    Selecteer een sjabloon voor de eerste functie van uw project Selecteer Azure Blob Storage trigger.
    Geef een functienaam op Voer BlobTriggerEventGrid in.
    Instelling selecteren in 'local.settings.json' Selecteer Create new local app setting.
    Een opslagaccount selecteren Selecteer het opslagaccount dat u hebt gemaakt.
    Dit is het pad binnen uw opslagaccount dat door de trigger wordt bewaakt Accepteer de standaardwaarde samples-workitems.
    Selecteer hoe u uw project wilt openen Selecteer Open in current window.
    Prompt Actie
    Selecteer een taal voor uw functieproject Selecteer JavaScript.
    Een JavaScript-programmeermodel selecteren Selecteer Model V4.
    Selecteer een sjabloon voor de eerste functie van uw project Selecteer Azure Blob Storage trigger.
    Geef een functienaam op Voer BlobTriggerEventGrid in.
    Instelling selecteren in 'local.settings.json' Selecteer Create new local app setting.
    Een opslagaccount selecteren Selecteer het opslagaccount dat u hebt gemaakt.
    Dit is het pad binnen uw opslagaccount dat door de trigger wordt bewaakt Accepteer de standaardwaarde samples-workitems.
    Selecteer hoe u uw project wilt openen Selecteer Open in current window.
    Prompt Actie
    Selecteer een taal voor uw functieproject Selecteer PowerShell.
    Selecteer een sjabloon voor de eerste functie van uw project Selecteer Azure Blob Storage trigger.
    Geef een functienaam op Voer BlobTriggerEventGrid in.
    Instelling selecteren in 'local.settings.json' Selecteer Create new local app setting.
    Een opslagaccount selecteren Selecteer het opslagaccount dat u hebt gemaakt.
    Dit is het pad binnen uw opslagaccount dat door de trigger wordt bewaakt Accepteer de standaardwaarde samples-workitems.
    Selecteer hoe u uw project wilt openen Selecteer Open in current window.
  5. Nadat de prompt wordt weergegeven, selecteert u Opslagaccount>toevoegen aan werkruimte.

Ter vereenvoudiging wordt in deze zelfstudie hetzelfde opslagaccount opnieuw gebruikt met uw functie-app. In productie wilt u echter mogelijk een afzonderlijk opslagaccount gebruiken met uw functie-app. Zie Overwegingen bij het gebruik van opslag voor Azure Functions voor meer informatie.

De opslagextensie upgraden

Als u de op Event Grid gebaseerde Blob Storage-trigger wilt gebruiken, vereist uw functie ten minste versie 5.x voor de Storage-extensie.

Als u uw project wilt upgraden met de vereiste extensieversie, voert u in het Terminal-venster de volgende opdracht uit: dotnet add package

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs --version 6.1.0
  1. Open het host.json projectbestand en inspecteer het extensionBundle element.

  2. Als extensionBundle.version dit ten minste niet het geval 3.3.0 is, vervangt u extensionBundle het volgende:

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

De functie bijwerken om gebeurtenissen te gebruiken

Voeg Source = BlobTriggerSource.EventGrid in het bestand BlobTriggerEventGrid.cs de parameters voor het kenmerk Blob-trigger toe, bijvoorbeeld:

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

Nadat u de functie hebt gemaakt, voegt u in het configuratiebestand function.json toe "source": "EventGrid" aan de myBlob binding, bijvoorbeeld:

{
  "scriptFile": "__init__.py",
  "bindings": [
    {
      "name": "myblob",
      "type": "blobTrigger",
      "direction": "in",
      "path": "samples-workitems/{name}",
      "source": "EventGrid",
      "connection": "<NAMED_STORAGE_CONNECTION>"
    }
  ]
}
  1. Vervang in het gegenereerde Function.java bestand de inhoud door de volgende code en wijzig de naam van het bestand in 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. Verwijder het bijbehorende eenheidstestbestand, dat niet meer van toepassing is op het nieuwe triggertype.

Nadat u de functie hebt gemaakt, voegt u dit toe source: "EventGrid" aan het object in uw options TypeScript-bestand, bijvoorbeeld:

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

Nadat u de functie hebt gemaakt, voegt u dit toe source: "EventGrid" aan het object in uw options JavaScript-bestand, bijvoorbeeld:

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

Nadat u de functie hebt gemaakt, voegt u in het configuratiebestand function.json toe "source": "EventGrid" aan de myBlob binding, bijvoorbeeld:

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

Lokale foutopsporing starten

Event Grid valideert de eindpunt-URL wanneer u een gebeurtenisabonnement maakt in Azure Portal. Deze validatie betekent dat voordat u een gebeurtenisabonnement kunt maken voor lokale foutopsporing, uw functie lokaal moet worden uitgevoerd met externe toegang die is ingeschakeld door het hulpprogramma ngrok. Als uw lokale functiecode niet wordt uitgevoerd en niet toegankelijk is voor Azure, kunt u het gebeurtenisabonnement niet maken.

Het eindpunt van de blobtrigger bepalen

Wanneer uw functie lokaal wordt uitgevoerd, ziet het standaardeindpunt dat wordt gebruikt voor een gebeurtenisgestuurde blobopslagtrigger eruit als de volgende URL:

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

Sla dit pad op, dat u later gaat gebruiken om eindpunt-URL's te maken voor gebeurtenisabonnementen. Als u een andere naam hebt gebruikt voor de door Blob Storage geactiveerde functie, moet u de functionName waarde in de querytekenreeks wijzigen.

Notitie

Omdat het eindpunt gebeurtenissen verwerkt voor een Blob Storage-trigger, bevat blobshet eindpuntpad . De eindpunt-URL voor een Event Grid-trigger zou in plaats daarvan in het pad hebben eventgrid .

ngrok uitvoeren

Als u wilt inbreken in een functie die wordt opgespoord op uw computer, moet u een manier bieden waarop Azure Event Grid kan communiceren met functies die op uw lokale computer worden uitgevoerd.

Het hulpprogramma ngrok stuurt externe aanvragen door naar een willekeurig gegenereerd proxyserveradres naar een specifiek adres en een specifieke poort op uw lokale computer. door het webhookeindpunt aan te roepen van de functie die op uw computer wordt uitgevoerd.

  1. Start ngrok met behulp van de volgende opdracht:

    ngrok.exe http http://localhost:7071
    

    Wanneer het hulpprogramma wordt gestart, ziet het opdrachtvenster er ongeveer als volgt uit:

    Screenshot that shows the Command Prompt after starting the

  2. Kopieer de HTTPS-URL die wordt gegenereerd wanneer ngrok wordt uitgevoerd. Deze waarde wordt gebruikt om het webhookeindpunt op uw computer te bepalen dat wordt weergegeven met behulp van ngrok.

Belangrijk

Stop op dit moment niet ngrok. Telkens wanneer u begint ngrok, wordt de HTTPS-URL opnieuw gegenereerd met een andere waarde. Omdat het eindpunt van een gebeurtenisabonnement niet kan worden gewijzigd, moet u telkens wanneer u het uitvoert ngrokeen nieuw gebeurtenisabonnement maken.

Tenzij u een ngrok-account maakt, is de maximale ngrok-sessietijd beperkt tot twee uur.

De eindpunt-URL bouwen

Het eindpunt dat wordt gebruikt in het gebeurtenisabonnement bestaat uit drie verschillende onderdelen, een voorvoegselservernaam, een pad en een querytekenreeks. In de volgende tabel worden deze onderdelen beschreven:

URL-onderdeel Beschrijving
Voorvoegsel en servernaam Wanneer uw functie lokaal wordt uitgevoerd, is de servernaam met een https:// voorvoegsel afkomstig van de doorstuur-URL die door ngrok wordt gegenereerd. In de localhost-URL vervangt http://localhost:7071de ngrok-URL. Wanneer u in Azure wordt uitgevoerd, gebruikt u in plaats daarvan de gepubliceerde functie-app-server, die meestal in de vorm https://<FUNCTION_APP_NAME>.azurewebsites.netstaat.
Pad Het padgedeelte van de eindpunt-URL is afkomstig van de localhost-URL die eerder is gekopieerd en lijkt op /runtime/webhooks/blobs een Blob Storage-trigger. Het pad voor een Event Grid-trigger zou zijn /runtime/webhooks/EventGrid
Queryreeks Voor alle talen, inclusief .NET Isolated, wordt de functionName=Host.Functions.BlobTriggerEventGrid parameter geïsoleerd, met uitzondering van .NET In-process, die zich functionName=BlobTriggerEventGrid in de queryreeks moet bevindt, de naam van de functie die de gebeurtenis verwerkt. Als u een andere naam voor uw functie hebt gebruikt, moet u deze waarde wijzigen. Een toegangssleutel is niet vereist wanneer u lokaal wordt uitgevoerd. Wanneer u in Azure werkt, moet u ook een code= parameter opnemen in de URL, die een sleutel bevat die u kunt ophalen vanuit de portal.

In de volgende schermopname ziet u een voorbeeld van hoe de uiteindelijke eindpunt-URL eruit moet zien wanneer u een Blob Storage-trigger gebruikt met de naam BlobTriggerEventGrid:

Endpoint selection

Foutopsporing starten

Als ngrok al wordt uitgevoerd, start u uw lokale project als volgt:

  1. Stel een onderbrekingspunt in uw functie in op de regel die logboekregistratie verwerkt.

  2. Start een foutopsporingssessie.

    Open een nieuwe terminal en voer de volgende mvn opdracht uit om de foutopsporingssessie te starten.

    mvn azure-functions:run -DenableDebug
    

    Druk op F5 om een foutopsporingssessie te starten.

Wanneer uw code wordt uitgevoerd en aanvragen voor het doorsturen van ngrok, is het tijd om een gebeurtenisabonnement te maken op de blobcontainer.

Het gebeurtenisabonnement maken

Een gebeurtenisabonnement, mogelijk gemaakt door Azure Event Grid, genereert gebeurtenissen op basis van wijzigingen in de gekoppelde blobcontainer. Deze gebeurtenis wordt vervolgens verzonden naar het eindpunt van de webhook op de trigger van uw functie. Nadat een gebeurtenisabonnement is gemaakt, kan de eindpunt-URL niet worden gewijzigd. Dit betekent dat nadat u klaar bent met lokale foutopsporing (of als u ngrok opnieuw start), u het gebeurtenisabonnement moet verwijderen en opnieuw moet maken.

  1. Kies in Visual Studio Code het Azure-pictogram op de activiteitenbalk. Vouw in Resources uw abonnement uit, vouw opslagaccounts uit, klik met de rechtermuisknop op het opslagaccount dat u eerder hebt gemaakt en selecteer Openen in de portal.

  2. Meld u aan bij Azure Portal en noteer de resourcegroep voor uw opslagaccount. U maakt uw andere resources in dezelfde groep om het gemakkelijker te maken om resources op te schonen wanneer u klaar bent.

  3. selecteer de optie Gebeurtenissen in het menu links.

    Add storage account event

  4. Selecteer in het venster Gebeurtenissen de knop + Gebeurtenisabonnement en geef waarden op uit de volgende tabel op het tabblad Basis :

    Instelling Voorgestelde waarde Omschrijving
    Naam myBlobLocalNgrokEventSub Naam waarmee het gebeurtenisabonnement wordt geïdentificeerd. U kunt de naam gebruiken om snel het gebeurtenisabonnement te vinden.
    Gebeurtenisschema Event Grid-schema Gebruik het standaardschema voor gebeurtenissen.
    Naam van systeemonderwerp samples-workitems-blobs Naam voor het onderwerp, dat de container vertegenwoordigt. Het onderwerp wordt gemaakt met het eerste abonnement en u gebruikt het voor toekomstige gebeurtenisabonnementen.
    Filteren op gebeurtenistypen Blob gemaakt
    Eindpunttype Webhook De blobopslagtrigger maakt gebruik van een webhookeindpunt. U gebruikt Azure Functions voor een Event Grid-trigger.
    Eindpunt Uw url-eindpunt op basis van ngrok Gebruik het url-eindpunt op basis van ngrok dat u eerder hebt bepaald.
  5. Selecteer Selectie bevestigen om de eindpunt-URL te valideren.

  6. Selecteer Maken om het gebeurtenisabonnement te maken.

Een bestand uploaden naar de container

Nu het gebeurtenisabonnement is ingesteld en uw codeproject en ngrok nog steeds actief is, kunt u nu een bestand uploaden naar uw opslagcontainer om uw functie te activeren. U kunt een bestand van uw computer uploaden naar uw Blob Storage-container met behulp van Visual Studio Code.

  1. Open in Visual Studio Code het opdrachtenpalet (druk op F1) en typ Azure Storage: Upload Files...het.

  2. Kies in het dialoogvenster Openen een bestand, bij voorkeur een binair afbeeldingsbestand dat niet te groot is, selecteer Uploaden .

  3. Geef de volgende informatie op bij de prompts:

    Instelling Voorgestelde waarde Beschrijving
    Een resource selecteren Naam van het opslagaccount Kies de naam van het opslagaccount dat u in een vorige stap hebt gemaakt.
    Een resourcetype selecteren Blobcontainers U uploadt naar een blobcontainer.
    Blobcontainer selecteren samples-workitems Deze waarde is de naam van de container die u in een vorige stap hebt gemaakt.
    Voer de doelmap van deze upload in default Accepteer gewoon de standaardwaarde van /, wat de hoofdmap van de container is.

Met deze opdracht wordt een bestand van uw computer geüpload naar de opslagcontainer in Azure. Op dit moment moet uw actieve ngrok-exemplaar rapporteren dat een aanvraag is doorgestuurd. U ziet ook in de func.exe uitvoer voor uw foutopsporingssessie dat uw functie is gestart. Hopelijk wacht uw foutopsporingssessie op u waar u het onderbrekingspunt hebt ingesteld.

Het project naar Azure publiceren

Nu u uw functiecode lokaal hebt gevalideerd, is het tijd om het project te publiceren naar een nieuwe functie-app in Azure.

De functie-app maken

Met de volgende stappen maakt u de resources die u nodig hebt in Azure en implementeert u uw projectbestanden.

  1. Voer in het opdrachtpallet Azure Functions in: Functie-app maken in Azure... (Geavanceerd).

  2. Geef deze informatie op na de aanwijzingen:

    Prompt Selectie
    Voer een wereldwijd unieke naam in voor de nieuwe functie-app. Typ een wereldwijd unieke naam waarmee uw nieuwe functie-app wordt geïdentificeerd en selecteer vervolgens Enter. Geldige tekens voor de naam van en functie-app zijn a-z, 0-9 en -. Noteer deze naam; u hebt deze later nodig bij het bouwen van de nieuwe eindpunt-URL.
    Selecteer een runtimestack. Kies de taalversie waarop u lokaal hebt uitgevoerd.
    Selecteer een besturingssysteem. Kies Linux of Windows. Python-apps moeten worden uitgevoerd op Linux.
    Selecteer een resourcegroep voor nieuwe resources. Kies de naam van de resourcegroep die u hebt gemaakt met uw opslagaccount, die u eerder hebt genoteerd in de portal.
    Selecteer een locatie voor nieuwe resources. Selecteer een locatie in een regio bij u in de buurt of in de buurt van andere services waartoe uw functies toegang hebben.
    Selecteer een hostingabonnement. Kies Verbruik voor hosting van serverloze verbruiksabonnementen, waarbij er alleen kosten in rekening worden gebracht wanneer uw functies worden uitgevoerd.
    Selecteer een opslagaccount. Kies de naam van het bestaande opslagaccount dat u hebt gebruikt.
    Selecteer een Application Insights-resource voor uw app. Kies Nieuwe Application Insights-resource maken en typ bij de prompt een naam voor het exemplaar dat wordt gebruikt voor het opslaan van runtimegegevens uit uw functies.

    Er wordt een melding weergegeven nadat uw functie-app is gemaakt en het implementatiepakket is toegepast. Selecteer in deze melding de optie Uitvoer weergeven om de resultaten van het maken en implementeren te bekijken, inclusief de Azure-resources die u hebt gemaakt.

De functiecode implementeren

Belangrijk

Als u implementeert in een bestaande functie-app, wordt de inhoud van die app altijd overschreven in Azure.

  1. Zoek in het gebied Resources van de Azure-activiteit de functie-app-resource die u zojuist hebt gemaakt, klik met de rechtermuisknop op de resource en selecteer Implementeren in functie-app....

  2. Wanneer u wordt gevraagd om eerdere implementaties te overschrijven, selecteert u Implementeren om uw functiecode te implementeren in de nieuwe functie-app-resource.

  3. Nadat de implementatie is voltooid, selecteert u Uitvoer weergeven om de resultaten van het maken en implementeren weer te geven, inclusief de Azure-resources die u hebt gemaakt. Als u de melding mist, selecteert u het belpictogram in de rechterbenedenhoek om deze opnieuw weer te geven.

    Screenshot of the View Output window.

Toepassingsinstellingen publiceren

Omdat de lokale instellingen van local.settings.json niet automatisch worden gepubliceerd, moet u ze nu uploaden zodat uw functie correct wordt uitgevoerd in Azure.

Voer in het opdrachtpallet Azure Functions in: Lokale Instellingen uploaden..., en kies in de opdrachtprompt Een resource selecteren de naam van uw functie-app.

Het gebeurtenisabonnement opnieuw maken

Nu de functie-app wordt uitgevoerd in Azure, moet u een nieuw gebeurtenisabonnement maken. Dit nieuwe gebeurtenisabonnement maakt gebruik van het eindpunt van uw functie in Azure. U voegt ook een filter toe aan het gebeurtenisabonnement, zodat de functie alleen wordt geactiveerd wanneer JPEG-bestanden (.jpg) aan de container worden toegevoegd. In Azure bevat de eindpunt-URL ook een toegangssleutel, waarmee andere actoren dan Event Grid geen toegang krijgen tot het eindpunt.

De blobextensiesleutel ophalen

  1. Kies in Visual Studio Code het Azure-pictogram op de activiteitenbalk. Vouw in Resources uw abonnement uit, vouw functie-app uit, klik met de rechtermuisknop op de functie-app die u hebt gemaakt en selecteer Openen in de portal.

  2. Selecteer app-sleutels onder Functies in het linkermenu.

  3. Selecteer onder Systeemsleutels de sleutel met de naam blobs_extension en kopieer de sleutelwaarde.

U neemt deze waarde op in de querytekenreeks van de nieuwe eindpunt-URL.

De eindpunt-URL bouwen

Maak een nieuwe eindpunt-URL voor de Blob Storage-trigger op basis van het volgende voorbeeld:

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>

Vervang in dit voorbeeld door <FUNCTION_APP_NAME> de naam van uw functie-app en vervang deze door <BLOB_EXTENSION_KEY> de waarde die u hebt verkregen in de portal. Als u een andere naam voor uw functie hebt gebruikt, moet u de querytekenreeks ook zo nodig wijzigen functionName .

Een gefilterd gebeurtenisabonnement maken

Omdat de eindpunt-URL van een gebeurtenisabonnement niet kan worden gewijzigd, moet u een nieuw gebeurtenisabonnement maken. U moet ook het oude gebeurtenisabonnement op dit moment verwijderen, omdat het niet opnieuw kan worden gebruikt.

Deze keer neemt u het filter op voor het gebeurtenisabonnement, zodat alleen JPEG-bestanden (*.jpg) de functie activeren.

  1. Kies in Visual Studio Code het Azure-pictogram op de activiteitenbalk. Vouw in Resources uw abonnement uit, vouw opslagaccounts uit, klik met de rechtermuisknop op het opslagaccount dat u eerder hebt gemaakt en selecteer Openen in de portal.

  2. Selecteer in Azure Portal de optie Gebeurtenissen in het menu links.

  3. Selecteer in het venster Gebeurtenissen uw oude gebeurtenisabonnement op basis van ngrok en selecteer Opslaan verwijderen>. Met deze actie wordt het oude gebeurtenisabonnement verwijderd.

  4. Selecteer de knop + Gebeurtenisabonnement en geef waarden op uit de volgende tabel op het tabblad Basis :

    Instelling Voorgestelde waarde Omschrijving
    Naam myBlobAzureEventSub Naam waarmee het gebeurtenisabonnement wordt geïdentificeerd. U kunt de naam gebruiken om snel het gebeurtenisabonnement te vinden.
    Gebeurtenisschema Event Grid-schema Gebruik het standaardschema voor gebeurtenissen.
    Filteren op gebeurtenistypen Blob gemaakt
    Eindpunttype Webhook De blobopslagtrigger maakt gebruik van een webhookeindpunt. U gebruikt Azure Functions voor een Event Grid-trigger.
    Eindpunt Uw nieuwe url-eindpunt op basis van Azure Gebruik het URL-eindpunt dat u hebt gemaakt, inclusief de sleutelwaarde.
  5. Selecteer Selectie bevestigen om de eindpunt-URL te valideren.

  6. Selecteer het tabblad Filters, schakel onder Onderwerpfilters het selectievakje Onderwerpfiltering inschakelen in, en typ .jpg het onderwerp eindigt op. Hiermee worden gebeurtenissen gefilterd op alleen JPEG-bestanden.

    Add filter

  7. Selecteer Maken om het gebeurtenisabonnement te maken.

De functie controleren in Azure

Nu de volledige topologie azure uitvoert, is het tijd om te controleren of alles correct werkt. Omdat u zich al in de portal bevindt, kunt u het eenvoudigst een bestand vanaf daar uploaden.

  1. Selecteer containers op de pagina van uw opslagaccount in de portal en selecteer uw container samples-workitems .

  2. Selecteer de knop Uploaden om de uploadpagina aan de rechterkant te openen, blader door uw lokale bestandssysteem om een .jpg bestand te zoeken dat u wilt uploaden en selecteer vervolgens de knop Uploaden om de blob te uploaden. Nu kunt u controleren of uw functie is uitgevoerd op basis van de gebeurtenis voor het uploaden van containers.

  3. Ga in uw opslagaccount terug naar de pagina Gebeurtenissen , selecteer Gebeurtenisabonnementen en u ziet dat er een gebeurtenis is afgeleverd.

  4. Ga terug naar de pagina van uw functie-app in de portal en selecteer Functies, kies uw functie en u ziet een totaal aantal uitvoeringen van ten minste één.

  5. Selecteer Controleren onder Ontwikkelaars en u ziet traceringen die zijn geschreven uit uw geslaagde functie-uitvoeringen. Er kan een vertraging van vijf minuten optreden wanneer gebeurtenissen worden verwerkt door Application Insights.

Resources opschonen

Wanneer u verder gaat met de volgende stap en een Azure Storage-wachtrijbinding aan uw functie toevoegt, moet u alle resources op dezelfde plaats laten staan, zodat u hiermee verder kunt gaan met wat u al hebt gedaan.

Als dat niet het geval is, kunt u de volgende stappen gebruiken om de functie-app en de bijbehorende resources te verwijderen om te voorkomen dat er verdere kosten in rekening worden gebracht.

  1. Druk in Visual Studio Code op F1 om het opdrachtenpalet te openen. In het opdrachtenpalet zoekt en selecteert u Azure: Open in portal.

  2. Kies uw functie-app en druk op Enter. De functie-app wordt geopend in de Azure-portal.

  3. Selecteer op het tabblad Overzicht de benoemde koppeling naast Resourcegroep.

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

  4. Controleer op de pagina Resourcegroep de lijst met opgenomen resources en controleer of ze de resources zijn die u wilt verwijderen.

  5. Selecteer Resourcegroep verwijderen en volg de instructies.

    Verwijderen kan enkele minuten duren. Wanneer dit is voltooid, verschijnt een aantal seconden een melding in beeld. U kunt ook het belpictogram bovenaan de pagina selecteren om de melding te bekijken.

Zie Kosten van verbruiksabonnementen schatten voor meer informatie over de kosten van Functions.

Volgende stappen