Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto kurzu se naučíte směrovat zprávy MQTT přijaté oborem názvů Azure Event Grid do funkce Azure pomocí vlastního tématu Event Gridu pomocí následujícího postupu:
Pokud nemáte předplatné Azure, můžete si zaregistrovat bezplatnou zkušební verzi.
Požadavky
Postupujte podle pokynů k vytvoření funkce Azure pomocí editoru Visual Studio Code, ale místo použití triggeru HTTP použijte trigger Azure Event Gridu. Měl by se zobrazit kód podobný následujícímu příkladu:
using System;
using Azure.Messaging;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;
namespace Company.Function
{
public class MyEventGridTriggerFunc
{
private readonly ILogger<MyEventGridTriggerFunc> _logger;
public MyEventGridTriggerFunc(ILogger<MyEventGridTriggerFunc> logger)
{
_logger = logger;
}
[Function(nameof(MyEventGridTriggerFunc))]
public void Run([EventGridTrigger] CloudEvent cloudEvent)
{
_logger.LogInformation("Event type: {type}, Event subject: {subject}", cloudEvent.Type, cloudEvent.Subject);
}
}
}
Tuto funkci Azure použijete jako obslužnou rutinu události pro odběr tématu později v tomto kurzu.
Poznámka:
- Vytvořte všechny prostředky ve stejném regionu.
- Tento návod byl testován s funkcí Azure, která používá běhové prostředí .NET 8.0 (izolované).
Vytvoření tématu Event Gridu (vlastní téma)
V tomto kroku vytvoříte téma Event Gridu.
- Zkopírujte a vložte skript do editoru.
- Nahraďte následující hodnoty.
- Vyberte Otevřít Cloud Shell.
- Přepněte z PowerShellu na Bash (v levém horním rohu okna Cloud Shellu).
- Zkopírujte a vložte skript z editoru do Cloud Shellu a spusťte skript.
Skript vytvoří skupinu prostředků Azure a v ní vytvoří vlastní téma Event Gridu. Později v tomto kurzu nakonfigurujete směrování pro obor názvů služby Event Grid tak, aby události nebo zprávy odeslané do oboru názvů byly směrovány do vlastního tématu a pak do funkce Azure prostřednictvím odběru tématu.
| Placeholder | Description |
|---|---|
RESOURCEGROUPNAME |
Název skupiny prostředků, kterou chcete vytvořit. |
REGION |
Oblast, ve které chcete vytvořit skupinu prostředků a vlastní téma. |
TOPICNAME |
Název vlastního tématu, které se má vytvořit. |
Skript pomocí az eventgrid topic create příkazu vytvoří téma Event Gridu nebo vlastní téma. Typ schématu je určen jako schéma cloudové události.
rgName="RESOURCEGROUPNAME"
location="REGION"
topicName="TOPICNAME"
az group create -n $rgName -l $location
az eventgrid topic create --name $topicName -l $location -g $rgName --input-schema cloudeventschemav1_0
Poznámka:
Schéma událostí cloudu můžete používat všude v tomto kurzu.
Přidání předplatného do tématu pomocí funkce
V tomto kroku vytvoříte předplatné vlastního tématu pomocí funkce Azure, kterou jste vytvořili dříve.
Nahraďte následující hodnoty a spusťte skript v Cloud Shellu. Skript pomocí az eventgrid event-subscription create příkazu vytvoří odběr funkce Azure pro vlastní téma. V příkazu je ID prostředku zdrojem tématu a koncový bod představuje ID prostředku funkce. Typ koncového bodu je nastavený na funkci Azure a schéma doručování událostí je určené jako schéma cloudové události.
| Placeholder | Description |
|---|---|
FUNCTIONRESOURCEGROUP |
Název skupiny prostředků, která má aplikaci Azure Functions. |
FUNCTIONSAPPNAME |
Název aplikace Azure Functions |
FUNCTIONNAME |
Název funkce Azure. |
funcAppRgName="FUNCTIONRESOURCEGROUP"
funcAppName="FUNCTIONSAPPNAME"
funcName="FUNCTIONNAME"
funcResourceId=$(az functionapp function show -g $funcAppRgName -n $funcAppName --function-name $funcName --query "{I:id}" -o tsv)
topicResourceId=$(az eventgrid topic show --name $topicName -g $rgName --query id --output tsv)
eventSubscriptionName="EVENTSUBSCRIPTIONNAME"
az eventgrid event-subscription create --name $eventSubscriptionName --source-resource-id $topicResourceId --endpoint-type azurefunction --endpoint $funcResourceId --event-delivery-schema cloudeventschemav1_0
Vytvořit namespace, klienty, prostory témat a vazby oprávnění
Postupujte podle pokynů z Průvodce rychlým startem: Publikování zpráv MQTT a přihlášení k jejich odběru v oboru názvů Event Grid pomocí Azure CLI pro:
- Vytvořte jmenný prostor Event Grid.
- Vytvořte dva klienty.
- Vytvořte prostor tématu.
- Vytvořte přiřazení oprávnění pro vydavatele a odběratele.
- Otestujte použití aplikace MQTTX a ověřte, že klienti můžou odesílat a přijímat zprávy.
Povolit spravovanou identitu pro obor názvů
Vyměňte následující hodnotu a spusťte skript pro povolení spravované identity přiřazené systémem pro obor názvů Event Grid.
| Placeholder | Description |
|---|---|
EVENTGRIDNAMESPACENAME |
Název namespace Event Gridu |
Skript používá příkaz az eventgrid namespace update s identity nastaveným na identitu SystemAssigned.
nsName="EVENTGRIDNAMESPACENAME"
az eventgrid namespace update -g $rgName -n $nsName --topic-spaces-configuration "{state:Enabled}" --identity "{type:SystemAssigned}"
Potom udělte spravované identitě oboru názvů oprávnění k odeslání vlastního tématu Event Gridu, které jste vytvořili dříve, aby obor názvů mohl odesílat nebo směrovat zprávy do vlastního tématu. Uděláte to tak, že přidáte spravovanou identitu do role Odesílatele dat Event Gridu ve vlastním tématu.
egNamespaceServicePrincipalObjectID=$(az ad sp list --display-name $nsName --query [].id -o tsv)
topicResourceId=$(az eventgrid topic show --name $topicName -g $rgName --query id --output tsv)
az role assignment create --assignee $egNamespaceServicePrincipalObjectID --role "EventGrid Data Sender" --scope $topicResourceId
Skript používá příkaz az role assignment create spolu s ID spravované identity oboru názvů a ID vlastního tématu a přiřazuje roli Odesílatele dat služby Event Grid spravované identitě oboru názvů na vlastním tématu.
Konfigurace směrování zpráv do funkce Azure pomocí vlastního tématu
V tomto kroku nakonfigurujete směrování pro obor názvů služby Event Grid tak, aby se zprávy, které obdrží, směrovaly do vlastního tématu, které jste vytvořili.
az eventgrid namespace update -g $rgName -n $nsName --topic-spaces-configuration "{state:Enabled,'routeTopicResourceId':$topicResourceId,'routingIdentityInfo':{type:SystemAssigned}}"
Skript pomocí az eventgrid namespace update příkazu nastaví téma směrování a typ spravované identity pro směrování událostí do tématu.
Odeslání testovacích zpráv MQTT pomocí MQTTX
Odešlete testovací zprávy MQTT do oboru názvů a potvrďte, že je funkce přijme.
Postupujte podle pokynů z článku Publikování a přihlášení k odběru zpráv pomocí aplikace MQTTX a odešlete několik testovacích zpráv do oboru názvů Event Grid.
Tady je tok událostí nebo zpráv:
MQTTX odesílá zprávy do prostoru témat Event Grid namespace.
Zprávy se přesměrují na vlastní téma, které jste nakonfigurovali.
Zprávy se přeposílají do odběru událostí, což je funkce Azure.
Pomocí funkce protokolování ověřte, že funkce přijala událost.
Další krok
Podívejte se na ukázky kódu v tomto úložišti GitHubu.