Delen via


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:

Een gebeurtenisabonnement maken

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.

De eindpunt-URL van de webhook ophalen

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.

De systeemsleutel verkrijgen

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

U kunt ook de hoofdsleutel voor uw functie-app ophalen uit functions-app-sleutels > in de portal.

Let op

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

Zie Werken met toegangssleutels in Azure Functions voor meer informatie.

U kunt de systeemsleutel ophalen uit uw functie-app met behulp van de volgende beheerders-API's (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}"
    }
  ]
}

Het abonnement 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.

Schermopname van het maken van verbinding met een nieuw gebeurtenisabonnement om te activeren in de portal.

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

Schermopname van het maken van een gebeurtenisabonnement met het functie-eindpunt dat al is gedefinieerd.

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.

Als u een HTTP-postaanvraag wilt verzenden, hebt u een HTTP-testhulpprogramma nodig. Zorg ervoor dat u een hulpprogramma kiest waarmee uw gegevens veilig blijven. Zie HTTP-testhulpprogramma's voor meer informatie.

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.

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.

Knop voor het implementeren van de Resource Manager-sjabloon in 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.

Nieuwe site weergeven

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.

Hoofdtekst van aanvraag kopiëren vanuit 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 uw HTTP-testhulpprogramma 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.

  • Verzend een HTTP POST-aanvraag naar het eindpunt waarmee de Event Grid-trigger handmatig wordt gestart.

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

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

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

Voorbeeld van event grid-triggerfunctielogboeken

Volgende stappen

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