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-prenumeration skapar du ett kostnadsfritt Azure-konto innan du börjar.

Skapa Azure-funktionsapp

  1. Logga in på Azure-portalen.

  2. På den vänstra navigeringsmenyn väljer du Alla tjänster.

  3. Välj Beräkning i listan över kategorier.

  4. Hovra (markera inte) musen över funktionsappen och välj +.

    Skärmbild som visar valet av Skapa länk för en funktionsapp.

  5. Följ dessa steg på sidan Grundläggande i guiden Skapa funktionsapp:

    1. Välj din Azure-prenumeration där du vill skapa funktionsappen.

    2. Skapa en ny resursgrupp eller välj en befintlig resursgrupp.

    3. Ange ett namn för funktionsappen.

    4. Välj .NET för Runtime-stack.

    5. För Version väljer du 6 (LTS), processmodell.

    6. Välj den region som är närmast dig.

    7. Välj Nästa: Lagring längst ned på sidan.

      Skärmbild som visar fliken Grundläggande på sidan Skapa funktionsapp.

  6. På sidan Lagring skapar du ett nytt lagringskonto eller väljer ett befintligt lagringskonto som ska associeras med funktionsappen och väljer sedan Granska + skapa längst ned på sidan.

    Skärmbild som visar fliken Lagring på sidan Skapa funktionsapp.

  7. På sidan Granska + skapa granskar du inställningarna och väljer Skapa längst ned på sidan för att skapa funktionsappen.

  8. När distributionen är klar väljer du Gå till resurs för att navigera till funktionsappens startsida.

Skapa en funktion

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

  1. På sidan Funktionsapp går du till avsnittet Skapa i Azure-portalen och väljer Länken Skapa funktion i den högra rutan.

    Skärmbild som visar valet av länken Skapa funktion.

  2. Följ dessa steg på sidan Skapa funktion :

    1. I avsnittet Välj en mall skriver du Azure Event Grid-utlösare i filter- eller sökrutan.

    2. Välj Azure Event Grid-utlösarmall i malllistan.

    3. Välj Nästa längst ned på sidan.

      Skärmbild som visar hur du väljer Event Grid-utlösare.

    4. På sidan Mallinformation anger du ett namn för funktionen. I det här exemplet är det HandleEventsFunc.

    5. Välj Skapa.

      Skärmbild som visar sidan Mallinformation.

  3. På sidan Funktion för HandleEventsFunc väljer du Kod + Test på den vänstra navigeringsmenyn, ersätter koden med följande kod och väljer sedan Spara i kommandofältet.

    #r "Azure.Messaging.EventGrid"
    #r "System.Memory.Data"
    
    using Azure.Messaging.EventGrid;
    using System;
    
    public static void Run(EventGridEvent eventGridEvent, ILogger log)
    {
        log.LogInformation(eventGridEvent.Data.ToString());
    }        
    

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

  4. Välj Övervaka på den vänstra menyn och växla till fliken Loggar . Behåll det här fönstret eller fliken i webbläsaren öppen så att du kan se den mottagna händelseinformationen.

    Skärmbild som visar övervakningsvyn för Azure-funktionen.

Skapa en anpassat ämne

Ett Event Grid-ämne innehåller en användardefinierad slutpunkt som du publicerar dina händelser till.

  1. Logga in på Azure-portalen på en ny flik i webbläsarfönstret.

  2. I sökfältet i ämnet söker du efter Event Grid-ämnen och väljer Event Grid-ämnen.

    Bild som visar valet av Event Grid-ämnen.

  3. På sidan Event Grid-ämnen väljer du + Skapa i kommandofältet.

    Skärmbild 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 i 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.

      Skärmbild 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 följande Event Grid-ämnessida 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 för att berätta för Event Grid vilka händelser du vill spåra och var händelserna ska skickas.

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

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

  2. Följ dessa steg på sidan Skapa händelseprenumeration :

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

    2. Välj Azure-funktion som slutpunktstyp.

    3. Välj Konfigurera en slutpunkt.

      Bild som visar händelseprenumerationsvärden.

    4. För funktionsslutpunkten väljer du den Azure-prenumeration och resursgrupp som funktionsappen finns i och väljer sedan funktionsappen och funktionen 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 Max-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 maximalt antal händelser som en prenumeration ska inkludera i en batch. Önskad batchstorlek anger den önskade övre gränsen för batchstorlek 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-portalen väljer du Cloud Shell. Välj Bash i det övre vänstra hörnet i Cloud Shell-fönstret.

    Bild som visar Cloud Shell – Bash-fönster

  2. Ange variablerna topicname och resourcegroupname som ska användas i kommandona.

    Ersätt TOPICNAME med namnet på event grid-ämnet.

    topicname="TOPICNAME"
    

    Ersätt RESOURCEGROUPNAME med namnet på den Azure-resursgrupp som innehåller Event Grid-ämnet.

    resourcegroupname="RESOURCEGROUPNAME"
    
  3. 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 $topicname -g $resourcegroupname --query "endpoint" --output tsv)
    
  4. 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 ämnesnamnetoch resursgruppens namn innan du kör kommandot.

    key=$(az eventgrid topic key list --name $topicname -g $resourcegroupname --query "key1" --output tsv)
    
  5. 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"} ]'
    
  6. 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-portalen väljer du Cloud Shell (du kan också gå till https://shell.azure.com/). Välj PowerShell i det övre vänstra hörnet i Cloud Shell-fönstret. Se cloud shell-exempelfönsterbilden 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 = "RESOURCEGROUPNAME"
    
    $topicName = "TOPICNAME"
    
  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 -instruktionerna i 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.

  1. På sidan Övervaka för din Azure-funktion visas ett anrop.

    Skärmbild som visar fliken Anrop på sidan Övervaka.

  2. Välj anropet för att se informationen.

    Skärmbild som visar information om anrop.

  3. Du kan också använda fliken Loggar i den högra rutan för att se de loggade meddelandena när du publicerar händelser till ämnets slutpunkt.

    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 skapades och användes 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:

Se följande exempel för att lära dig mer om att publicera händelser till och använda händelser från Event Grid med olika programmeringsspråk.