Så här arbetar du med Event Grid-utlösare och bindningar i Azure Functions

Azure Functions tillhandahåller inbyggd integrering med Azure Event Grid med hjälp av utlösare och bindningar. Den här artikeln visar hur du konfigurerar och utvärderar event grid-utlösare och bindningar lokalt. Mer information om definitioner och exempel för Event Grid-utlösare och utdatabindning finns i någon av följande referensartiklar:

Prenumerationer på händelser

Om du vill börja ta emot Event Grid HTTP-begäranden behöver du en prenumeration på händelser som genereras av Event Grid. Händelseprenumerationer anger slutpunkts-URL:en som anropar funktionen. När du skapar en händelseprenumeration från funktionens integrationsflik i Azure-portalen tillhandahålls URL:en åt dig. När du programmatiskt skapar en händelseprenumeration eller när du skapar händelseprenumerationen från Event Grid måste du ange slutpunkten. Slutpunkts-URL:en innehåller en systemnyckel som du måste hämta från FUNCTIONS-administratörens REST-API:er.

Url för Webhook-slutpunkt

URL-slutpunkten för den Event Grid-utlösta funktionen beror på versionen av Functions-körningen. I följande exempel visas det versionsspecifika URL-mönstret:

https://{functionappname}.azurewebsites.net/runtime/webhooks/eventgrid?functionName={functionname}&code={systemkey}

Kommentar

Det finns en version av Blob Storage-utlösaren som också använder händelseprenumerationer. Slutpunkts-URL:en för den här typen av Blob Storage-utlösare har en sökväg /runtime/webhooks/blobstill , medan sökvägen för en Event Grid-utlösare skulle vara /runtime/webhooks/EventGrid. En jämförelse av alternativ för bearbetning av blobar finns i Utlösare för en blobcontainer.

Systemnyckel

URL-slutpunkten som du skapar innehåller systemnyckelvärdet. Systemnyckeln är en auktoriseringsnyckel som måste ingå i slutpunkts-URL:en för en Event Grid-utlösare. I följande avsnitt beskrivs hur du hämtar systemnyckeln.

Du kan hämta systemnyckeln med hjälp av följande API (HTTP GET):

http://{functionappname}.azurewebsites.net/admin/host/systemkeys/eventgrid_extension?code={masterkey}

Det här REST-API:et är ett administratörs-API, så det kräver din huvudnyckel för funktionsappen. Förväxla inte systemnyckeln (för att anropa en Event Grid-utlösarfunktion) med huvudnyckeln (för att utföra administrativa uppgifter i funktionsappen). När du prenumererar på ett Event Grid-ämne bör du använda systemnyckeln.

Här är ett exempel på svaret som tillhandahåller systemnyckeln:

{
  "name": "eventgridextensionconfig_extension",
  "value": "{the system key for the function}",
  "links": [
    {
      "rel": "self",
      "href": "{the URL for the function, without the system key}"
    }
  ]
}

Du kan hämta huvudnyckeln för funktionsappen från fliken Funktionsappinställningar i portalen.

Viktigt!

Huvudnyckeln ger administratörsåtkomst till funktionsappen. Dela inte den här nyckeln med tredje part eller distribuera den i interna klientprogram.

Mer information finns i auktoriseringsnycklar i http-utlösarreferensartikeln.

Skapa en händelseprenumeration

Du kan skapa en händelseprenumeration antingen från Azure-portalen eller med hjälp av Azure CLI.

För funktioner som du utvecklar i Azure-portalen med Event Grid-utlösaren väljer du Integrering, sedan Event Grid-utlösaren och väljer Skapa Event Grid-prenumeration.

Screenshot of connecting to a new event subscription to trigger in the portal.

När du väljer den här länken öppnar portalen sidan Skapa händelseprenumeration med den aktuella utlösarslutpunkten redan definierad.

Screenshot of creating an event subscription with the function endpoint already defined.

Mer information om hur du skapar prenumerationer med hjälp av Azure-portalen finns i Skapa anpassad händelse – Azure-portalen i Event Grid-dokumentationen.

Mer information om hur du skapar en prenumeration finns i snabbstarten för bloblagring eller andra Event Grid-snabbstarter.

Lokal testning med visningswebbapp

Om du vill testa en Event Grid-utlösare lokalt måste du få Event Grid HTTP-begäranden levererade från deras ursprung i molnet till din lokala dator. Ett sätt att göra det är genom att samla in begäranden online och manuellt skicka om dem på den lokala datorn:

  1. Skapa en visningswebbapp som samlar in händelsemeddelanden.
  2. Skapa en Event Grid-prenumeration som skickar händelser till visningsappen.
  3. Generera en begäran och kopiera begärandetexten från visningsprogrammet.
  4. Publicera begäran manuellt till localhost-URL:en för din Event Grid-utlösarfunktion.

När du är klar med testningen kan du använda samma prenumeration för produktion genom att uppdatera slutpunkten. Använd Azure CLI-kommandot az eventgrid event-subscription update .

Du kan också använda ngrok-verktyget för att vidarebefordra fjärrbegäranden till lokala funktioner som körs. För mer information se den här handledningen.

Skapa en visningsprogramwebbapp

För att förenkla insamlingen av händelsemeddelanden kan du distribuera en fördefinierad webbapp som visar händelsemeddelandena. Den distribuerade lösningen innehåller en App Service-plan,en webbapp för App Service och källkod från GitHub.

Välj Deploy to Azure (Distribuera till Azure) för att distribuera lösningen till din prenumeration. Ange parametervärdena i Azure Portal.

Button to deploy the Resource Manager template to Azure.

Det kan ta några minuter att slutföra distributionen. Efter distributionen har slutförts kan du visa webbappen för att kontrollera att den körs. I en webbläsare navigerar du till: https://<your-site-name>.azurewebsites.net

Du ser webbplatsen men det har inte publicerats händelser till den än.

View new site

Skapa en Event Grid-prenumeration

Skapa en Event Grid-prenumeration av den typ som du vill testa och ge den URL:en från webbappen som slutpunkt för händelsemeddelande. Slutpunkten för ditt webbprogram måste innehålla suffixet /api/updates/. Därför är den fullständiga URL:en https://<your-site-name>.azurewebsites.net/api/updates

Information om hur du skapar prenumerationer med hjälp av Azure-portalen finns i Skapa anpassad händelse – Azure-portalen i Event Grid-dokumentationen.

Generera en begäran

Utlös en händelse som genererar HTTP-trafik till webbappens slutpunkt. Om du till exempel har skapat en bloblagringsprenumeration laddar du upp eller tar bort en blob. När en begäran visas i webbappen kopierar du begärandetexten.

Begäran om prenumerationsverifiering tas emot först. ignorera eventuella valideringsbegäranden och kopiera händelsebegäran.

Copy request body from web app

Publicera begäran manuellt

Kör event grid-funktionen lokalt. Huvudena Content-Type och aeg-event-type måste anges manuellt, medan alla andra värden kan lämnas kvar som standard.

Använd ett verktyg som Postman eller curl för att skapa en HTTP POST-begäran:

  • Ange en Content-Type: application/json rubrik.

  • Ange en aeg-event-type: Notification rubrik.

  • Klistra in RequestBin-data i begärandetexten.

  • Publicera till URL:en för din Event Grid-utlösarfunktion.

    http://localhost:7071/runtime/webhooks/eventgrid?functionName={FUNCTION_NAME}
    

Parametern functionName måste vara det namn som anges i attributet FunctionName .

Följande skärmbilder visar rubrikerna och begärandetexten i Postman:

Headers in Postman

Request body in Postman

Utlösarfunktionen Event Grid kör och visar loggar som liknar följande exempel:

Sample Event Grid trigger function logs

Nästa steg

Mer information om Event Grid med Functions finns i följande artiklar: