Werken met Event Grid-triggers en -bindingen in Azure Functions

Azure Functions biedt ingebouwde integratie met Azure Event Grid met behulp van triggers en bindingen. In dit artikel leest u hoe u uw Event Grid-trigger en -bindingen configureert en lokaal evalueert. Zie een van de volgende naslagartikelen voor meer informatie over event grid-trigger- en uitvoerbindingsdefinities en -voorbeelden:

Gebeurtenisabonnementen

Als u HTTP-aanvragen voor Event Grid wilt ontvangen, hebt u een abonnement nodig op gebeurtenissen die door Event Grid worden gegenereerd. Gebeurtenisabonnementen geven de eindpunt-URL op die de functie aanroept. Wanneer u een gebeurtenisabonnement maakt op het tabblad Integratie van uw functie in Azure Portal, wordt de URL voor u opgegeven. Wanneer u programmatisch een gebeurtenisabonnement maakt of wanneer u het gebeurtenisabonnement maakt vanuit Event Grid, moet u het eindpunt opgeven. De eindpunt-URL bevat een systeemsleutel die u moet verkrijgen bij REST API's van functions-beheerders.

Url van webhookeindpunt

Het URL-eindpunt voor uw door Event Grid geactiveerde functie is afhankelijk van de versie van de Functions-runtime. In het volgende voorbeeld ziet u het versiespecifieke URL-patroon:

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

Notitie

Er is een versie van de Blob Storage-trigger die ook gebeurtenisabonnementen gebruikt. De eindpunt-URL voor dit type Blob Storage-trigger heeft een pad van /runtime/webhooks/blobs, terwijl het pad voor een Event Grid-trigger zou zijn /runtime/webhooks/EventGrid. Zie Trigger voor een blobcontainer voor een vergelijking van opties voor het verwerken van blobs.

Systeemsleutel

Het URL-eindpunt dat u maakt, bevat de waarde van de systeemsleutel. De systeemsleutel is een autorisatiesleutel die moet worden opgenomen in de eindpunt-URL voor een Event Grid-trigger. In de volgende sectie wordt uitgelegd hoe u de systeemsleutel kunt ophalen.

U kunt de systeemsleutel ophalen met behulp van de volgende API (HTTP GET):

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

Deze REST API is een beheerders-API, dus hiervoor is de hoofdsleutel van uw functie-app vereist. Verwar de systeemsleutel (voor het aanroepen van een Event Grid-triggerfunctie) niet met de hoofdsleutel (voor het uitvoeren van beheertaken in de functie-app). Wanneer u zich abonneert op een Event Grid-onderwerp, moet u de systeemsleutel gebruiken.

Hier volgt een voorbeeld van het antwoord dat de systeemsleutel levert:

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

U kunt de hoofdsleutel voor uw functie-app ophalen op het tabblad Instellingen van de functie-app in de portal.

Belangrijk

De hoofdsleutel biedt beheerderstoegang tot uw functie-app. Deel deze sleutel niet met derden of distribueer deze niet in systeemeigen clienttoepassingen.

Zie autorisatiesleutels in het naslagartikel voor HTTP-triggers voor meer informatie.

Een gebeurtenisabonnement maken

U kunt een gebeurtenisabonnement maken vanuit Azure Portal of met behulp van de Azure CLI.

Voor functies die u in Azure Portal ontwikkelt met de Event Grid-trigger, selecteert u Integratie en kiest u vervolgens De Event Grid-trigger en selecteert u Een Event Grid-abonnement maken.

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

Wanneer u deze koppeling selecteert, wordt de pagina Gebeurtenisabonnement maken geopend met het huidige triggereindpunt dat al is gedefinieerd.

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

Zie Aangepaste gebeurtenis maken - Azure Portal in de Event Grid-documentatie voor meer informatie over het maken van abonnementen met behulp van Azure Portal.

Zie de quickstart voor Blob Storage of de andere Event Grid-quickstarts voor meer informatie over het maken van een abonnement.

Lokaal testen met viewer-web-app

Als u een Event Grid-trigger lokaal wilt testen, moet u HTTP-aanvragen van Event Grid ophalen die afkomstig zijn van hun oorsprong in de cloud naar uw lokale computer. Een manier om dat te doen is door aanvragen online vast te leggen en deze handmatig opnieuw te verzenden op uw lokale computer:

  1. Maak een viewer-web-app waarmee gebeurtenisberichten worden vastgelegd.
  2. Maak een Event Grid-abonnement waarmee gebeurtenissen naar de viewer-app worden verzonden.
  3. Genereer een aanvraag en kopieer de hoofdtekst van de aanvraag uit de viewer-app.
  4. Plaats de aanvraag handmatig op de localhost-URL van uw Event Grid-triggerfunctie.

Wanneer u klaar bent met testen, kunt u hetzelfde abonnement voor productie gebruiken door het eindpunt bij te werken. Gebruik de az eventgrid event-subscription update Azure CLI-opdracht.

U kunt ook het hulpprogramma ngrok gebruiken om externe aanvragen door te sturen naar uw lokaal actieve functies. Raadpleeg deze zelfstudie voor meer informatie.

Een viewer-web-app maken

Ter vereenvoudiging van het vastleggen van gebeurtenisberichten kunt u een vooraf gebouwde web-app implementeren waarin de gebeurtenisberichten worden weergegeven. De geïmplementeerde oplossing omvat een App Service-plan, een App Service-web-app en broncode van GitHub.

Selecteer Implementeren in Azure om de oplossing voor uw abonnement te implementeren. Geef in Azure Portal waarden op voor de parameters.

Button to deploy the Resource Manager template to Azure.

De implementatie kan enkele minuten duren. Controleer of uw web-app wordt uitgevoerd nadat de implementatie is voltooid. Navigeer in een webbrowser naar: https://<your-site-name>.azurewebsites.net

De site wordt weergegeven, maar er zijn nog geen gebeurtenissen op gepubliceerd.

View new site

Een Event Grid-abonnement maken

Maak een Event Grid-abonnement van het type dat u wilt testen en geef deze de URL van uw web-app als eindpunt voor gebeurtenismeldingen. Het eindpunt voor uw web-app moet het achtervoegsel /api/updates/ bevatten. De volledige URL is dus https://<your-site-name>.azurewebsites.net/api/updates

Zie Aangepaste gebeurtenis maken - Azure Portal in de Event Grid-documentatie voor meer informatie over het maken van abonnementen met behulp van Azure Portal.

Een aanvraag genereren

Activeer een gebeurtenis waarmee HTTP-verkeer naar het eindpunt van uw web-app wordt gegenereerd. Als u bijvoorbeeld een blobopslagabonnement hebt gemaakt, uploadt of verwijdert u een blob. Wanneer een aanvraag wordt weergegeven in uw web-app, kopieert u de hoofdtekst van de aanvraag.

De aanvraag voor abonnementsvalidatie wordt eerst ontvangen; negeer alle validatieaanvragen en kopieer de gebeurtenisaanvraag.

Copy request body from web app

Handmatig de aanvraag plaatsen

Voer de Event Grid-functie lokaal uit. De Content-Type en aeg-event-type kopteksten moeten handmatig worden ingesteld, terwijl alle andere waarden standaard kunnen worden ingesteld.

Gebruik een hulpprogramma zoals Postman of curl om een HTTP POST-aanvraag te maken:

  • Stel een Content-Type: application/json koptekst in.

  • Stel een aeg-event-type: Notification koptekst in.

  • Plak de RequestBin-gegevens in de hoofdtekst van de aanvraag.

  • Plaats deze op de URL van uw Event Grid-triggerfunctie.

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

De functionName parameter moet de naam zijn die is opgegeven in het FunctionName kenmerk.

In de volgende schermafbeeldingen ziet u de headers en aanvraagbody in Postman:

Headers in Postman

Request body in Postman

De Event Grid-triggerfunctie wordt uitgevoerd en toont logboeken die vergelijkbaar zijn met het volgende voorbeeld:

Sample Event Grid trigger function logs

Volgende stappen

Zie de volgende artikelen voor meer informatie over Event Grid met Functions: