Dela via


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:

Skapa en händelseprenumeration

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.

Hämta url:en för webhookens 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.

Hämta systemnyckeln

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

Du kan också hämta huvudnyckeln för funktionsappen från Functions>App-nycklar i portalen.

Varning

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 Arbeta med åtkomstnycklar i Azure Functions.

Du kan hämta systemnyckeln från funktionsappen med hjälp av följande administratörs-API:er (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}"
    }
  ]
}

Skapa prenumerationen

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.

Skärmbild av anslutning till en ny händelseprenumeration som ska utlösas i portalen.

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

Skärmbild av att skapa en händelseprenumeration med funktionsslutpunkten redan definierad.

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.

Om du vill skicka en HTTP-postbegäran behöver du ett HTTP-testverktyg. Se till att välja ett verktyg som skyddar dina data. Mer information finns i HTTP-testverktyg.

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 .

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.

Knapp för att distribuera Resource Manager-mallen till 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.

Visa ny webbplats

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.

Kopiera begärandetext från webbapp

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 HTTP-testverktyget 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.

  • Skicka en HTTP POST-begäran till slutpunkten som startar Event Grid-utlösaren manuellt.

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

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

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

Exempel på funktionsloggar för Event Grid-utlösare

Nästa steg

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