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

Förutsättningar

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 knappen Azure Functions i kommandofältet och väljer 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 väljer du C# för Språk och väljer sedan returnyckeln.

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

  6. För .NET-körning väljer du .NET 8.0 Isolerad LTS och väljer sedan returnyckeln.

  7. Som Mall för funktionen väljer du Azure Event Grid-utlösare och väljer sedan returnyckeln.

  8. För Funktionsnamn anger du ett namn för funktionen och väljer sedan returnyckeln.

  9. För Namnområde anger du ett namn för funktionens namnområde och väljer sedan returnyckeln.

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

  4. Som Namn anger du ett globalt unikt namn för den nya funktionsappen och väljer sedan returnyckeln.

  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 expanderar du meddelandet Skapa funktionsapp lyckades och väljer 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 självstudien.

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

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 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 länken 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.

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

    6. 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 ska innehålla 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.

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

  1. I Azure-portalen 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 returnyckeln.

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

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

    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. På sidan Övervaka för din funktion hittar du ett anrop.

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

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

    Skärmbild som visar information om anrop.

    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.

    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. På den vänstra menyn väljer du Resursgrupper.

    Skärmbild som visar sidan för resursgrupper

    Ett alternativ är att välja Alla tjänster på den vänstra menyn och sedan välja 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: