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:
- Översikt över Azure Event Grid-bindningar
- Azure Event Grid-utlösare för Azure Functions
- Azure Event Grid-utdatabindning för Azure Functions
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 Portal anges 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/blobs
till , 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 Portal eller med hjälp av Azure CLI.
För funktioner som du utvecklar i Azure Portal med Event Grid-utlösaren väljer du Integrering, sedan Event Grid-utlösaren och väljer Skapa Event Grid-prenumeration.
När du väljer den här länken öppnar portalen sidan Skapa händelseprenumeration med den aktuella utlösarslutpunkten redan definierad.
Mer information om hur du skapar prenumerationer med hjälp av Azure Portal finns i Skapa anpassad händelse – Azure Portal 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:
- Skapa en visningswebbapp som samlar in händelsemeddelanden.
- Skapa en Event Grid-prenumeration som skickar händelser till visningsappen.
- Generera en begäran och kopiera begärandetexten från visningsprogrammet.
- 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.
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.
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 Portal finns i Skapa anpassad händelse – Azure Portal 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.
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.
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:
Nästa steg
Mer information om Event Grid med Functions finns i följande artiklar: