Snabbstart: Dirigera anpassade händelser till en Azure-funktion med Event Grid

Azure Event Grid är en händelsetjänst för molnet. Azure Functions är en av de händelsehanterare som stöds. I den här artikeln använder du Azure-portalen för att skapa ett anpassat ämne, prenumerera på det anpassade ämnet och utlösa händelsen för att visa resultatet. Du skickar händelserna till en Azure-funktion.

Om du inte har en Azure-prenumerationkan du skapa ett kostnads fritt konto innan du börjar.

Skapa Azure-funktion

Innan du prenumererar på det anpassade ämnet skapar du en funktion för att hantera händelserna.

  1. Skapa en funktionsapp med hjälp av instruktioner från Skapa en funktionsapp.

  2. På sidan Funktionsapp väljer du Funktioner på den vänstra menyn.

  3. Välj +Skapa i verktygsfältet för att skapa en funktion.

  4. På sidan Skapa funktion följer du dessa steg:

    1. Det här är valfritt. För Utvecklingsmiljö väljer du den utvecklingsmiljö som du vill använda för att arbeta med funktionskoden.

    2. Välj Azure Event Grid utlösare i avsnittet Välj en mall.

    3. Ange ett namn för funktionen. I det här exemplet är det HandleEventsFunc.

      Välj Event Grid utlösare.

  5. Använd sidan Kod + test för att se den befintliga koden för funktionen och uppdatera den.

    Bild som visar menyn Kod + test för en Azure-funktion.

Aktivera Event Grid-resursprovider

Om du inte har använt Event Grid förut i din Azure-prenumeration kan du behöva registrera Event Grid-resursprovidern.

I Azure-portalen:

  1. Välj prenumerationer på den vänstra menyn.
  2. Välj den prenumeration som du använder för Event Grid.
  3. Välj resurs leverantörer på den vänstra menyn under Inställningar.
  4. Hitta Microsoft.EventGrid.
  5. Om du inte är registrerad väljer du Registrera.

Det kan ta en stund att slutföra registreringen. Välj Uppdatera för att uppdatera statusen. När Status är Registrerad är du redo att fortsätta.

Skapa en anpassat ämne

Ett event grid-ämne tillhandahåller en användardefinierad slutpunkt där du publicerar dina händelser.

  1. Logga in på Azure-portalen.

  2. Välj Alla tjänster på den vänstra navigeringsmenyn, sök efter Event Grid och välj Event Grid Avsnitt.

    Bild som visar valet av Event Grid ämnen.

  3. På sidan Event Grid avsnitt väljer du + Lägg till i verktygsfältet.

    Bild som visar knappen Skapa för att skapa ett Event Grid-ämne.

  4. Följ dessa steg på sidan Skapa ämne:

    1. Välj din Azure-prenumeration.

    2. Välj samma resursgrupp från föregående steg.

    3. Ange ett unikt namn för det anpassade ämnet. Ämnesnamnet måste vara unikt eftersom det representeras av en DNS-post. Använd inte det namn som visas på bilden. I stället skapar du ett eget namn som måste bestå av 3–50 tecken och enbart får innehålla a-z, A-Z, 0-9 och ”-”.

    4. Välj en plats för Event Grid-ämnet.

    5. Välj Granska + skapa.

      Bild som visar sidan Skapa ämne.

    6. På sidan Granska + skapa granskar du inställningarna och väljer Skapa.

  5. När det anpassade ämnet har skapats väljer du Gå till resurslänk för att se Event Grid sidan Ämne för det ämne som du skapade.

    Bild som visar startsidan för ditt anpassade Event Grid ämne.

Prenumerera på anpassat ämne

Du prenumererar på ett Event Grid-ämne därför att du vill ange för Event Grid vilka händelser du vill följa och vart du vill skicka händelserna.

  1. På sidan Event Grid för ditt anpassade ämne väljer du + Händelseprenumeration i verktygsfältet.

    Bild som visar valet av Lägg till händelseprenumeration i verktygsfältet.

  2. På sidan Skapa händelseprenumeration följer du dessa steg:

    1. Ange ett namn för händelseprenumerationen.

    2. Välj Azure Function som Slutpunktstyp.

    3. Välj Välj en slutpunkt.

      Bild som visar händelseprenumerationens värden.

    4. För funktionsslutpunkten väljer du den Azure-prenumeration och resursgrupp som funktionsappen finns i och väljer sedan den funktionsapp och funktion som du skapade tidigare. Välj Bekräfta val.

      Bild som visar sidan Välj Azure-funktion som visar valet av funktion som du skapade tidigare.

    5. Det här steget är valfritt, men rekommenderas för produktionsscenarier. På sidan Skapa händelseprenumeration växlar du till fliken Avancerade funktioner och anger värden för Maximalt antal händelser per batch och Önskad batchstorlek i kilobyte.

      Batchbearbetning kan ge dig högt dataflöde. För Maximalt antal händelser per batch anger du det maximala antalet händelser som en prenumeration ska innehålla i en batch. Önskad batchstorlek anger den önskade övre gränsen för batchstorleken i kilobyte, men kan överskridas om en enskild händelse är större än det här tröskelvärdet.

      Bild som visar batchinställningar för en händelseprenumeration.

    6. På sidan Skapa händelseprenumeration väljer du Skapa.

Skicka en händelse till ditt ämne

Nu ska vi utlösa en händelse och se hur Event Grid distribuerar meddelandet till slutpunkten. Du kan använda antingen Azure CLI eller PowerShell och skicka en testhändelse till det anpassade ämnet. Ett program eller en Azure-tjänst skulle vanligtvis skicka sådana händelsedata.

I det första exemplet används Azure CLI. URL och nyckel för det anpassade ämnet hämtas, och exempeldata för händelsen. Använd ditt anpassade ämnesnamn för <topic name>. Exempelhändelsedata skapas. Elementet data av JSON är händelsens nyttolast. All välformulerad JSON kan stå i det här fältet. Du kan också använda ämnesfältet för avancerad omdirigering och filtrering. CURL är ett verktyg som skickar HTTP-förfrågningar.

Azure CLI

  1. I Azure Portal väljer du Cloud Shell. Välj Bash i det övre vänstra hörnet Cloud Shell fönstret.

    Bild som visar Cloud Shell – Bash-fönstret

  2. Kör följande kommando för att hämta slutpunkten för ämnet: När du har kopierat och klistrat in kommandot uppdaterar du ämnesnamnet och resursgruppens namn innan du kör kommandot.

    endpoint=$(az eventgrid topic show --name <topic name> -g <resource group name> --query "endpoint" --output tsv)
    
  3. Kör följande kommando för att hämta nyckeln för det anpassade ämnet: När du har kopierat och klistrat in kommandot uppdaterar du ämnesnamnet och resursgruppens namn innan du kör kommandot.

    key=$(az eventgrid topic key list --name <topic name> -g <resource group name> --query "key1" --output tsv)
    
  4. Kopiera följande instruktion med händelsedefinitionen och tryck på RETUR.

    event='[ {"id": "'"$RANDOM"'", "eventType": "recordInserted", "subject": "myapp/vehicles/motorcycles", "eventTime": "'`date +%Y-%m-%dT%H:%M:%S%z`'", "data":{ "make": "Ducati", "model": "Monster"},"dataVersion": "1.0"} ]'
    
  5. Kör följande Curl-kommando för att publicera händelsen:

    curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
    

Azure PowerShell

I det andra exemplet används PowerShell för att utföra liknande steg.

  1. I Azure Portal väljer du Cloud Shell (du kan också gå till https://shell.azure.com/ ). Välj PowerShell i det övre vänstra hörnet Cloud Shell fönstret. Se exempelfönstret Cloud Shell i avsnittet Azure CLI.

  2. Ange följande variabler. När du har kopierat och klistrat in varje kommando uppdaterar du ämnesnamnet och resursgruppens namn innan du kör kommandot:

    $resourceGroupName = <resource group name>
    $topicName = <topic name>
    
  3. Kör följande kommandon för att hämta slutpunkten och nycklarna för ämnet:

    $endpoint = (Get-AzEventGridTopic -ResourceGroupName $resourceGroupName -Name $topicName).Endpoint
    $keys = Get-AzEventGridTopicKey -ResourceGroupName $resourceGroupName -Name $topicName
    
  4. Förbered händelsen. Kopiera och kör -isatserna Cloud Shell fönstret.

    $eventID = Get-Random 99999
    
    #Date format should be SortableDateTimePattern (ISO 8601)
    $eventDate = Get-Date -Format s
    
    #Construct body using Hashtable
    $htbody = @{
        id= $eventID
        eventType="recordInserted"
        subject="myapp/vehicles/motorcycles"
        eventTime= $eventDate   
        data= @{
            make="Ducati"
            model="Monster"
        }
        dataVersion="1.0"
    }
    
    #Use ConvertTo-Json to convert event body from Hashtable to JSON Object
    #Append square brackets to the converted JSON payload since they are expected in the event's JSON payload syntax
    $body = "["+(ConvertTo-Json $htbody)+"]"
    
  5. Använd cmdleten Invoke-WebRequest för att skicka händelsen.

    Invoke-WebRequest -Uri $endpoint -Method POST -Body $body -Headers @{"aeg-sas-key" = $keys.Key1}
    

Kontrollera att funktionen tog emot händelsen

Du har utlöst händelsen och Event Grid skickade meddelandet till den slutpunkt som du konfigurerade när du prenumererade. Gå till den Event Grid utlösta funktionen och öppna loggarna. Du bör se en kopia av datanyttolasten för händelsen i loggarna. Om du inte är säker på att du öppnar loggfönstret först eller trycker på Återanslut och sedan försöker skicka en testhändelse igen.

Bild som visar övervakningsvyn för Azure-funktionen med en logg.

Rensa resurser

Om du planerar att fortsätta arbeta med den här händelsen ska du inte rensa upp bland de resurser som skapades i den här artikeln. I annat fall tar du bort alla resurser som du har skapat i den här artikeln.

  1. Välj Resursgrupper på den vänstra menyn. Om du inte ser den på den vänstra menyn väljer du Alla tjänster på den vänstra menyn och väljer Resursgrupper.

  2. Välj resursgruppen för att starta sidan Resursgrupp.

  3. Välj Ta bort resursgrupp i verktygsfältet.

  4. Bekräfta borttagningen genom att ange namnet på resursgruppen och välj Ta bort.

    Resursgrupper

    Den andra resursgruppen som visas i avbildningen har skapats och använts av Cloud Shell fönstret. Ta bort den om du inte planerar att använda Cloud Shell-fönstret senare.

Nästa steg

Nu när du vet hur du skapar ämnen och prenumerationer på händelser kan du läsa mer om vad Event Grid kan hjälpa dig med:

I följande exempel kan du läsa mer om att publicera händelser till och använda händelser från Event Grid med olika programmeringsspråk.