Dela via


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

Azure Event Grid är en händelsedirigeringstjänst för molnet. Azure Functions är en av de händelsehanterare som stöds.

I den här snabbstarten använder du Azure Portal 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 något Azure-konto skapar du ett kostnadsfritt konto innan du börjar.

Förutsättningar

Skapa en funktion med en Event Grid-utlösare med hjälp av Visual Studio Code

I det här avsnittet använder du Visual Studio Code för att skapa en funktion med en Event Grid-utlösare.

Skapa en funktion

  1. Öppna Visual Studio Code.

  2. Välj Azure i det vänstra fältet.

  3. I den vänstra rutan i avsnittet ARBETSYTA väljer du Azure Functions i kommandofältet. Välj sedan Skapa funktion.

    Skärmbild som visar fliken Azure i Visual Studio Code med menykommandot för att skapa en funktion.

  4. Välj en mapp där du vill spara funktionskoden.

  5. För kommandot Skapa nytt projekt för Språk väljer du C#. Välj Ange.

    Skärmbild som visar valet av C Sharp som språk för att utveckla en Azure-funktion.

  6. För .NET-körningstid, välj .NET 8.0 Isolerad LTS och tryck sedan på Retur.

  7. Som Mall för funktionen väljer du Azure Event Grid-utlösare. Välj Ange.

  8. För Funktionsnamn anger du ett namn för funktionen. Välj Ange.

  9. För Namnområde anger du ett namn för funktionens namnområde. Välj Ange.

  10. Öppna projektet i det aktuella fönstret eller ett nytt fönster eller lägg till det i en arbetsyta.

  11. Vänta tills funktionen har skapats. Status för funktionens skapande visas i det nedre högra hörnet.

    Skärmbild som visar status för skapande av funktion.

  12. Visa koden i filen YourFunctionName.cs , särskilt Run metoden. Den skriver ut informationen med hjälp av en logger.

    [Function(nameof(MyEventGridTriggerFunc))]
    public void Run([EventGridTrigger] CloudEvent cloudEvent)
    {
        _logger.LogInformation("Event type: {type}, Event subject: {subject}", cloudEvent.Type, cloudEvent.Subject);
    }
    

Distribuera funktionen till Azure

  1. Välj Azure-knappen i det vänstra fältet om Azure-fönstret inte redan är öppet.

  2. Hovra över projektet och välj knappen Distribuera till Azure .

    Skärmbild som visar knappen för distribution till Azure.

  3. I listrutan på kommandopaletten väljer du + Skapa ny funktionsapp och väljer sedan Retur.

  4. Som Namn anger du ett globalt unikt namn för den nya funktionsappen. Välj Ange.

  5. För Körningsstack väljer du .NET 8 Isolerad.

  6. För Plats för dina Azure-resurser väljer du en region som är nära dig.

  7. Status för skapande av funktionsapp visas på fliken AZURE i det nedre fönstret. När funktionsappen har skapats visas statusen för distributionen av funktionen som du skapade lokalt till funktionsappen.

  8. När distributionen har slutförts utvidgar du meddelandet om att Skapa funktionsapp lyckades. Välj Klicka för att visa resursen. Bekräfta att funktionen är markerad i avsnittet RESURSER i den vänstra rutan.

  9. Högerklicka på din funktion och välj sedan Öppna i portalen.

    Skärmbild som visar val för att öppna en funktion i portalen.

  10. Logga in på Azure om det behövs och bekräfta att sidan Funktionsapp visas för din funktion.

  11. Välj din funktion i den nedre rutan.

    Skärmbild som visar valet av en Azure-funktion på sidan Funktionsapp.

  12. Växla till fliken Loggar . Håll den här fliken öppen så att du kan se loggade meddelanden när du skickar en händelse till ett Event Grid-ämne senare i den här artikeln.

    Skärmbild som visar fliken Loggar för en funktion i Azure Portal.

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 Portal 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 sedan Event Grid-ämnen.

    Skärmbild som visar valet av Event Grid-ämnen.

  3. På sidan Ämnen väljer du + Skapa i kommandofältet.

    Skärmbild som visar knappen för att skapa ett Event Grid-ämne.

  4. Följ dessa steg i fönstret Skapa ämne :

    1. För Prenumeration väljer du din Azure-prenumeration.

    2. För Resursgrupp väljer du samma resursgrupp i föregående steg.

    3. Som Namn anger du ett unikt namn för det anpassade ämnet. Ämnesnamnet måste vara unikt eftersom en DNS-post (Domain Name System) representerar det.

      Använd inte namnet som visas i exempelbilden. Skapa ett eget namn istället. Det måste vara 3–50 tecken och innehålla endast värdena a-z, A-Z, 0-9 och ett bindestreck (-).

    4. För Region väljer du en plats för event grid-ämnet.

    5. Välj Granska + skapa.

      Skärmbild som visar fönstret för att skapa ett ämne.

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

  5. När det anpassade ämnet har skapats väljer du Gå till resurs för att öppna sidan Event Grid-ämne för det ämnet.

    Skärmbild som visar sidan för ett anpassat Event Grid-ämne.

Prenumerera på ett 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.

    Skärmbild som visar knappen för att lägga till en händelseprenumeration i verktygsfältet.

  2. Följ dessa steg i fönstret Skapa händelseprenumeration :

    1. Som Namn anger du ett namn för händelseprenumerationen.

    2. För Händelseschema väljer du Molnhändelseschema v1.0.

    3. För Slutpunktstyp väljer du Azure-funktion.

    4. Välj Konfigurera en slutpunkt.

      Skärmbild som visar händelseprenumerationsvärden.

  3. Följ dessa steg i fönstret Välj Azure-funktion :

    1. För Prenumeration väljer du den Azure-prenumeration som har funktionen.

    2. För Resursgrupp väljer du den resursgrupp som har funktionen.

    3. För Funktionsapp väljer du din funktionsapp.

    4. För Funktion väljer du funktionen i funktionsappen.

    5. Välj Bekräfta val.

      Skärmbild som visar fönstret för att välja en tidigare skapad Azure-funktion.

  4. Det här steget är valfritt, men vi rekommenderar det för produktionsscenarier. I fönstret Skapa händelseprenumeration går du till fliken Ytterligare funktioner och anger värden för Maxhä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 innehåller i en batch. Önskad batchstorlek i kilobyte anger den önskade övre gränsen för batchstorlek, men den kan överskridas om en enskild händelse är större än det här tröskelvärdet.

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

  5. I fönstret Skapa händelseprenumeration väljer du Skapa.

Skicka en händelse till ditt ämne

Utlös nu en händelse för att se hur Event Grid distribuerar meddelandet till slutpunkten. Använd antingen Azure CLI eller Azure PowerShell för att skicka en testhändelse till ditt anpassade ämne. Vanligtvis skickar ett program eller en Azure-tjänst händelsedata.

I det första exemplet används Azure CLI. Den hämtar URL:en och nyckeln för det anpassade ämnet och exempelhändelsedata. Använd ditt anpassade ämnesnamn för topicname. 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-verktyget skickar HTTP-begäranden. I den här artikeln använder du cURL för att skicka händelsen till det anpassade ämnet.

Azure CLI (kommandoradsgränssnittet för Azure)

  1. I Azure Portal väljer du Cloud Shell. Om du är i Azure PowerShell-läge väljer du Växla till Bash.

    Skärmbild som visar Bash-fönstret i Azure Cloud Shell.

  2. Ange variablerna topicname och resourcegroupname som används 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. Använd 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 det.

    endpoint=$(az eventgrid topic show --name $topicname -g $resourcegroupname --query "endpoint" --output tsv)
    
  4. Använd 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 det.

    key=$(az eventgrid topic key list --name $topicname -g $resourcegroupname --query "key1" --output tsv)
    
  5. Kopiera följande instruktion med händelsedefinitionen och välj sedan 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
    
  7. Bekräfta att meddelandet från funktionen visas på fliken Loggar för funktionen i Azure Portal.

    Skärmbild som visar fliken Loggar för en Azure-funktion.

Azure PowerShell

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

  1. I Azure-portalen väljer du Cloud Shell eller går till Azure Cloud Shell-sidan. I det övre vänstra hörnet i Cloud Shell-fönstret väljer du Växla till PowerShell.

  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 det.

    $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 dessa instruktioner i Cloud Shell-fönstret:

    $eventID = Get-Random 99999
    
    #Date format should be SortableDateTimePattern (ISO 8601)
    $eventDate = Get-Date -Format s
    
    #Construct the body by using a hash table
    $htbody = @{
        id= $eventID
        eventType="recordInserted"
        subject="myapp/vehicles/motorcycles"
        eventTime= $eventDate   
        data= @{
            make="Ducati"
            model="Monster"
        }
        dataVersion="1.0"
    }
    
    #Use ConvertTo-Json to convert the event body from a hash table to a JSON object
    #Append square brackets to the converted JSON payload because they're 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}
    
  6. Bekräfta att meddelandet från funktionen visas på fliken Loggar för funktionen i Azure Portal.

    Skärmbild som visar fliken Loggar för en funktion.

Kontrollera att funktionen tog emot händelsen

Du utlöste händelsen och Event Grid skickade meddelandet till slutpunkten som du konfigurerade när du prenumererade. Nu kan du kontrollera om funktionen tog emot den.

  1. Öppna fliken Anrop för funktionen.

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

  2. För att visa detaljerna, välj anropet.

    Skärmbild som visar information om anrop.

    Du kan också använda fliken Loggar .

    Skärmbild som visar övervakningsvyn för en funktion med en logg.

Rensa resurser

Om du planerar att fortsätta arbeta med den här händelsen ska du inte rensa resurserna som du skapade i den här artikeln. Annars tar du bort de resurser som du skapade i den här artikeln.

  1. I sökrutan i Azure-portalen anger du Resursgrupper och väljer sedan Resursgrupper.

    Skärmbild som visar sidan för resursgrupper.

  2. Välj resursgruppen för att öppna fönstret för dess information.

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

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

Cloud Shell-fönstret skapade och använde den andra resursgruppen som visas på sidan Resursgrupper . Ta bort den här resursgruppen om du inte planerar att använda Cloud Shell-fönstret senare.

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:

Mer information om hur du publicerar händelser till och använder händelser från Event Grid med hjälp av olika programmeringsspråk finns i följande exempel: