Rychlý Start: směrování vlastních událostí do funkce Azure pomocí Event Grid

Azure Event Grid je služba zpracování událostí pro cloud. Azure Functions je jednou z podporovaných obslužných rutin událostí. V tomto článku vytvoříte pomocí webu Azure Portal vlastní téma, přihlásíte se k jeho odběru a aktivujete událost, abyste viděli výsledek. Události odešlete do funkce Azure Functions.

Pokud ještě nemáte předplatné Azure,vytvořte si bezplatný účet před tím, než začnete.

Vytvoření funkce Azure

Před přihlášením k odběru vlastního tématu vytvořte funkci pro zpracování událostí.

  1. Vytvořte aplikaci funkcí pomocí pokynů v tématu Vytvoření aplikace Function App.

  2. Na stránce Function App v nabídce vlevo vyberte funkce .

  3. Vytvořte funkci výběrem + vytvořit na panelu nástrojů.

  4. Na stránce vytvořit funkci proveďte tyto kroky:

    1. Tento krok je volitelný. Pro vývojové prostředí vyberte vývojové prostředí, které chcete použít pro práci s kódem funkce.

    2. V části Vybrat šablonu vyberte aktivační událost Azure Event Grid .

    3. Zadejte název funkce. V tomto příkladu je to HandleEventsFunc.

      Vyberte aktivační událost Event Grid.

  5. Pomocí stránky Code + test zobrazte existující kód funkce a aktualizujte ji.

    Obrázek znázorňující výběr kódu a nabídky testu pro funkci Azure Functions

Povolit poskytovatele prostředků služby Event Grid

Pokud jste ve vašem předplatném Azure ještě službu Event Grid nepoužívali, budete možná muset zaregistrovat poskytovatele prostředků služby Event Grid.

Na webu Azure Portal:

  1. V nabídce vlevo vyberte odběry .
  2. Vyberte předplatné, které používáte pro službu Event Grid.
  3. V nabídce vlevo v části Nastavení vyberte poskytovatelé prostředků.
  4. Vyhledejte Microsoft.EventGrid.
  5. Pokud prostředek není zaregistrovaný, vyberte Zaregistrovat.

Dokončení registrace může chvíli trvat. Stav můžete aktualizovat kliknutím na Aktualizovat. Jakmile se Stav změní na Zaregistrováno, můžete pokračovat.

Vytvoření vlastního tématu

Téma Event Gridu poskytuje uživatelsky definovaný koncový bod, do kterého odesíláte události.

  1. Přihlaste se k portálu Azure.

  2. V levém navigačním panelu vyberte všechny služby , vyhledejte Event Grid a vyberte Event Grid témata.

    Obrázek znázorňující výběr témat Event Grid.

  3. Na stránce Event Grid témata vyberte + Přidat na panelu nástrojů.

    Obrázek znázorňující tlačítko vytvořit pro vytvoření tématu Event gridu

  4. Na stránce vytvořit téma postupujte podle následujících kroků:

    1. Vyberte své předplatné Azure.

    2. Vyberte stejnou skupinu prostředků z předchozích kroků.

    3. Zadejte jedinečný název vlastního tématu. Název tématu musí být jedinečný, protože je reprezentován položkou DNS. Nepoužívejte název zobrazený na obrázku. Místo toho vytvořte vlastní název – musí mít 3-50 znaků a obsahovat pouze hodnoty a-z, A-Z, 0-9 a "-".

    4. Vyberte umístění tématu Event Grid.

    5. Vyberte Zkontrolovat a vytvořit.

      Obrázek znázorňující stránku vytvořit téma

    6. Na stránce Revize + vytvořit zkontrolujte nastavení a vyberte vytvořit.

  5. Po vytvoření vlastního tématu klikněte na odkaz Přejít k prostředku a na téma, které jste vytvořili, se zobrazí následující stránka Event Grid téma.

    Obrázek znázorňující domovskou stránku vlastního tématu Event Grid.

Přihlášení k odběru vlastního tématu

K odběru tématu Event Gridu se přihlašujete, aby služba Event Grid věděla, které události chcete sledovat a kam má tyto události odesílat.

  1. Nyní na stránce Event Grid téma pro vlastní téma vyberte + odběr události na panelu nástrojů.

    Obrázek znázorňující výběr přidaných odběrů událostí na panelu nástrojů.

  2. Na stránce vytvořit odběr události použijte následující postup:

    1. Zadejte název odběru události.

    2. Jako Typ koncového bodu vyberte Azure Function .

    3. Zvolte Vybrat koncový bod.

      Obrázek znázorňující hodnoty odběru událostí

    4. V případě koncového bodu funkce vyberte předplatné Azure a skupinu prostředků, ve které je Function App, a pak vyberte Function App a funkci, kterou jste vytvořili dříve. Zvolte Potvrdit výběr.

      Obrázek znázorňující stránku funkce vybrat Azure zobrazující výběr funkce, kterou jste vytvořili dříve.

    5. Tento krok je nepovinný, ale doporučuje se pro produkční scénáře. Na stránce vytvořit odběr události přepněte na kartu Pokročilé funkce a nastavte hodnoty maximálního počtu událostí na dávku a upřednostňovanou velikost dávky v kilobajtech.

      Dávkování vám může poskytnout vysokou propustnost. Pro Maximum událostí na jednu dávku nastavte maximální počet událostí, které bude předplatné zahrnovat do dávky. Upřednostňovaná velikost dávky nastaví upřednostňovanou horní mez velikosti dávky v kilobajtech, ale může být překročena, pokud je jediná událost větší než tato prahová hodnota.

      Obrázek znázorňující nastavení dávkování pro odběr události.

    6. Na stránce vytvořit odběr události vyberte vytvořit.

Odeslání události do tématu

Nyní aktivujeme událost, abychom viděli, jak služba Event Grid distribuuje zprávu do vašeho koncového bodu. K odeslání testovací události do vlastního tématu použijte Azure CLI nebo PowerShell. Obvykle by aplikace nebo služba Azure odesílala data události.

V prvním příkladu se používá Azure CLI. Načte adresu URL a klíč vlastního tématu a data ukázkové události. Místo položky <topic name> použijte název vlastního tématu. Vytvoří se ukázková data události. Element JSON data je datová část vaší události. V tomto poli může být libovolný JSON ve správném formátu. Můžete také použít pole subject (předmět) pro pokročilé směrování a filtrování. CURL je nástroj, který odesílá požadavky HTTP.

Azure CLI

  1. V Azure Portal vyberte Cloud Shell. V levém horním rohu okna Cloud Shell vyberte bash .

    Obrázek znázorňující okno Cloud Shell – bash

  2. Spusťte následující příkaz, který získá koncový bod pro téma: po zkopírování a vložení příkazu aktualizujte název tématu a název skupiny prostředků před spuštěním příkazu.

    endpoint=$(az eventgrid topic show --name <topic name> -g <resource group name> --query "endpoint" --output tsv)
    
  3. Spusťte následující příkaz, který získá klíč pro vlastní téma: po zkopírování a vložení příkazu aktualizujte název tématu a název skupiny prostředků před spuštěním příkazu.

    key=$(az eventgrid topic key list --name <topic name> -g <resource group name> --query "key1" --output tsv)
    
  4. Zkopírujte následující příkaz s definicí události a stiskněte klávesu ENTER.

    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. Spusťte následující příkaz kudrlinkou pro odeslání události:

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

Azure PowerShell

V druhém příkladu se k provedení podobných kroků používá PowerShell.

  1. V Azure Portal vyberte možnost Cloud Shell (nebo přejít na https://shell.azure.com/ ). V levém horním rohu okna Cloud Shell vyberte PowerShell . Podívejte se na ukázku obrázku okna Cloud Shell v části Azure CLI.

  2. Nastavte následující proměnné. Po zkopírování a vložení každého příkazu aktualizujte název tématu a název skupiny prostředků před spuštěním příkazu:

    $resourceGroupName = <resource group name>
    $topicName = <topic name>
    
  3. Spusťte následující příkazy, abyste získali koncový bod a klíče pro téma:

    $endpoint = (Get-AzEventGridTopic -ResourceGroupName $resourceGroupName -Name $topicName).Endpoint
    $keys = Get-AzEventGridTopicKey -ResourceGroupName $resourceGroupName -Name $topicName
    
  4. Připraví událost. Zkopírujte a spusťte příkazy v okně Cloud Shell.

    $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. K odeslání události použijte rutinu Invoke-WebRequest .

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

Ověřte, že funkce přijala událost.

Právě jste aktivovali událost a služba Event Grid odeslala zprávu do koncového bodu, který jste nakonfigurovali při přihlášení k odběru. Přejděte do funkce aktivované Event Grid a otevřete protokoly. V protokolech by se měla zobrazit kopie datové části události. Pokud si nejste jistí, že jste nejdřív otevřeli okno protokoly, nebo se znovu připojte a zkuste znovu odeslat testovací událost.

Obrázek znázorňující zobrazení monitorování Azure Functions s protokolem.

Vyčištění prostředků

Pokud chcete pokračovat v práci s touto událostí, nevyčišťujte prostředky vytvořené v rámci tohoto článku. V opačném případě odstraňte prostředky, které jste v rámci tohoto článku vytvořili.

  1. V nabídce vlevo vyberte Skupiny prostředků. Pokud ji v nabídce vlevo nevidíte, vyberte v nabídce vlevo Všechny služby a pak vyberte Skupiny prostředků.

  2. Výběrem skupiny prostředků spusťte stránku Skupina prostředků.

  3. Na panelu nástrojů vyberte Odstranit skupinu prostředků.

  4. Potvrďte odstranění zadáním názvu skupiny prostředků a vyberte Odstranit.

    Skupiny prostředků

    Druhá skupina prostředků, kterou vidíte na obrázku, byla vytvořena a použita v Cloud Shell prostředků. Odstraňte ho, pokud nechcete toto okno použít Cloud Shell později.

Další kroky

Když teď víte, jak vytvářet témata a odběry událostí, zjistěte, s čím vám služba Event Grid ještě může pomoct:

V následujících ukázkách se dozvíte o publikování událostí do a používání událostí z Event Grid různých programovacích jazyků.