Rychlý start: Směrování vlastních událostí do funkce Azure Pomocí Event Gridu

Azure Event Grid je služba zpracování událostí pro cloud. Azure Functions je jedním 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 Azure před tím, než začnete.

Vytvoření aplikace funkcí Azure

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

  2. V levé navigační nabídce vyberte Všechny služby.

  3. V seznamu kategorií vyberte Compute.

  4. Najeďte myší (ne vyberte) na function App a vyberte +.

    Snímek obrazovky znázorňující výběr odkazu Vytvořit pro aplikaci funkcí

  5. Na stránce Základy průvodce vytvořením aplikace funkcí postupujte takto:

    1. Vyberte své předplatné Azure, ve kterém chcete vytvořit aplikaci funkcí.

    2. Vytvořte novou skupinu prostředků nebo vyberte existující skupinu prostředků.

    3. Zadejte název aplikace funkcí.

    4. Vyberte .NET pro zásobník modulu runtime.

    5. Jako verzi vyberte 6 (LTS), model v procesu.

    6. Vyberte oblast, která je k vám nejblíže.

    7. Vyberte Další: Úložiště v dolní části stránky.

      Snímek obrazovky znázorňující kartu Základy na stránce Vytvořit aplikaci funkcí

  6. Na stránce Úložiště vytvořte nový účet úložiště nebo vyberte existující účet úložiště, který se má přidružit k aplikaci funkcí, a pak v dolní části stránky vyberte Zkontrolovat a vytvořit.

    Snímek obrazovky znázorňující kartu Úložiště na stránce Vytvořit aplikaci funkcí

  7. Na stránce Zkontrolovat a vytvořit, zkontrolujte nastavení a v dolní části stránky vyberte Vytvořit a vytvořte aplikaci funkcí.

  8. Po úspěšném nasazení vyberte Přejít k prostředku a přejděte na domovskou stránku aplikace funkcí.

Vytvoření funkce

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

  1. Na stránce Aplikace funkcí v části Vytvořit na webu Azure Portal vyberte v pravém podokně odkaz Vytvořit funkci.

    Snímek obrazovky znázorňující výběr odkazu vytvořit funkci

  2. Na stránce Vytvořit funkci postupujte takto:

    1. V části Vybrat šablonu zadejte do pole filtru nebo vyhledávacího pole trigger Azure Event Grid.

    2. V seznamu šablon vyberte šablonu triggeru služby Azure Event Grid.

    3. V dolní části stránky vyberte Další .

      Snímek obrazovky znázorňující výběr triggeru Event Gridu

    4. Na stránce s podrobnostmi šablony zadejte název funkce. V tomto příkladu je to HandleEventsFunc.

    5. Vyberte Vytvořit.

      Snímek obrazovky zobrazující stránku s podrobnostmi šablony

  3. Na stránce Funkce pro HandleEventsFunc vyberte v levé navigační nabídce kód + test, nahraďte kód následujícím kódem a pak vyberte Uložit na panelu příkazů.

    #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());
    }        
    

    Obrázek znázorňující výběr nabídky Code + Test pro funkci Azure

  4. V nabídce vlevo vyberte Možnost Sledovat a přepněte na kartu Protokoly . Nechte toto okno nebo kartu prohlížeče otevřené, abyste viděli informace o přijaté události.

    Snímek obrazovky zobrazující zobrazení funkce Azure Monitor

Vytvoření vlastního tématu

Téma Event Gridu poskytuje uživatelem definovaný koncový bod, do kterého publikujete události.

  1. Na nové kartě okna webového prohlížeče se přihlaste k webu Azure Portal.

  2. Na panelu hledání v tématu vyhledejte témata Event Gridu a vyberte Témata Event Gridu.

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

  3. Na stránce Témata event Gridu vyberte na panelu příkazů + Vytvořit.

    Snímek obrazovky znázorňující tlačítko Vytvořit pro vytvoření tématu Event Gridu

  4. Na stránce Vytvořit téma postupujte takto:

    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 délku 3 až 50 znaků a obsahovat pouze hodnoty a-z, A-Z, 0-9 a "-".

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

    5. Vyberte Zkontrolovat a vytvořit.

      Snímek obrazovky se stránkou Vytvořit téma

    6. Na stránce Zkontrolovat a vytvořit zkontrolujte nastavení a vyberte Vytvořit.

  5. Po vytvoření vlastního tématu vyberte Přejít k odkazu na prostředek a podívejte se na následující stránku tématu Event Gridu pro téma, které jste vytvořili.

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

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

Přihlásíte se k odběru tématu Event Gridu, abyste službě Event Grid řekli, které události chcete sledovat a kam se mají události odesílat.

  1. Teď na stránce Téma event Gridu pro vlastní téma vyberte na panelu nástrojů možnost + Odběr událostí.

    Obrázek znázorňující výběr možnosti Přidat odběr událostí na panelu nástrojů

  2. Na stránce Vytvořit odběr události postupujte takto:

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

    2. Jako typ koncového bodu vyberte funkci Azure Functions.

    3. Zvolte Konfigurovat 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 vaše aplikace funkcí, a pak vyberte aplikaci funkcí a funkci, kterou jste vytvořili dříve. Zvolte Potvrdit výběr.

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

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

      Dávkování vám může poskytnout vysokou propustnost. U maximálních událostí na dávku nastavte maximální počet událostí, které předplatné zahrne do dávky. Upřednostňovaná velikost dávky nastavuje upřednostňovanou horní mez velikosti dávky v bajtech kilo, ale lze ji překročit, pokud je jedna událost větší než tato prahová hodnota.

      Obrázek znázorňující nastavení dávkování odběru událostí

    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. Na webu Azure Portal vyberte Cloud Shell. V levém horním rohu okna Cloud Shellu vyberte Bash .

    Obrázek znázorňující okno Cloud Shellu – Bash

  2. Nastavte proměnné topicnameresourcegroupname , které se použijí v příkazech.

    Nahraďte TOPICNAME názvem tématu Event Gridu.

    topicname="TOPICNAME"
    

    Nahraďte RESOURCEGROUPNAME názvem skupiny prostředků Azure, která obsahuje téma Event Gridu.

    resourcegroupname="RESOURCEGROUPNAME"
    
  3. Spuštěním následujícího příkazu získejte koncový bod tématu: Po zkopírování a vložení příkazu před spuštěním příkazu aktualizujte název tématu a název skupiny prostředků.

    endpoint=$(az eventgrid topic show --name $topicname -g $resourcegroupname --query "endpoint" --output tsv)
    
  4. Spuštěním následujícího příkazu získejte 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 $topicname -g $resourcegroupname --query "key1" --output tsv)
    
  5. Zkopírujte následující příkaz s definicí události a stiskněte 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"} ]'
    
  6. Spuštěním následujícího příkazu Curl publikujte událost:

    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. Na webu Azure Portal vyberte Cloud Shell (případně přejděte na https://shell.azure.com/). V levém horním rohu okna Cloud Shellu vyberte PowerShell . Podívejte se na ukázkový obrázek okna Cloud Shellu 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 = "RESOURCEGROUPNAME"
    
    $topicName = "TOPICNAME"
    
  3. Spuštěním následujících příkazů získejte koncový bod a klíče pro dané téma:

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

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

  1. Na stránce Monitorování funkce Azure se zobrazí vyvolání.

    Snímek obrazovky znázorňující kartu Vyvolání na stránce Monitorování

  2. Výběrem vyvolání zobrazíte podrobnosti.

    Snímek obrazovky s podrobnostmi o vyvolání

  3. Můžete také použít kartu Protokoly v pravém podokně k zobrazení protokolovaných zpráv při publikování událostí do koncového bodu tématu.

    Obrázek znázorňující zobrazení funkce Azure Monitor 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 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 v imagi, byla vytvořena a používána oknem Cloud Shellu. Pokud nechcete později okno Cloud Shellu používat, odstraňte ho.

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 Event Gridu a jejich využívání pomocí různých programovacích jazyků.