Oktatóanyag: MQTT-üzenetek átirányítása az Azure Event Gridben az Azure Functionsbe egyéni témakörök használatával – Azure CLI
Ebben az oktatóanyagban megtudhatja, hogyan irányíthatja az Azure Event Grid-névtér által fogadott MQTT-üzeneteket egy Egyéni Event Grid-témakör segítségével egy Azure-függvényhez az alábbi lépések végrehajtásával:
Ha nincs Azure-előfizetése, regisztráljon egy ingyenes próbaverzióra.
Előfeltételek
Kövesse az Azure-függvény létrehozása a Visual Studio Code használatával című témakör utasításait, de a HTTP-eseményindító helyett használja az Azure Event Grid-eseményindítót. A következő példához hasonló kódnak kell megjelennie:
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);
}
}
}
Ezt az Azure-függvényt az oktatóanyag későbbi részében eseménykezelőként használhatja egy témakör előfizetéséhez.
Feljegyzés
- Hozzon létre minden erőforrást ugyanabban a régióban.
- Ezt az oktatóanyagot egy .NET 8.0 (izolált) futtatókörnyezeti vermet használó Azure-függvényrel teszteltük.
Event Grid-témakör létrehozása (egyéni témakör)
Ebben a lépésben létrehoz egy Event Grid-témakört.
- Másolja és illessze be a szkriptet egy szerkesztőbe.
- Cserélje le a következő értékeket.
- Válassza a Cloud Shell megnyitása lehetőséget.
- Váltson PowerShellről Bash-re (a Cloud Shell ablakának bal felső sarkában).
- Másolja és illessze be a szkriptet a szerkesztőből a Cloud Shellbe, és futtassa a szkriptet.
A szkript létrehoz egy Azure-erőforráscsoportot és egy Egyéni Event Grid-témakört. Az oktatóanyag későbbi részében úgy konfigurálja az Event Grid-névtér útválasztását, hogy a névtérbe küldött események vagy üzenetek az egyéni témakörhöz, majd az Azure-függvényhez legyenek irányítva a témakörre való előfizetésen keresztül.
Helyőrző | Leírás |
---|---|
RESOURCEGROUPNAME |
A létrehozandó erőforráscsoport neve. |
REGION |
Az a régió, amelyben létre szeretné hozni az erőforráscsoportot és az egyéni témakört. |
TOPICNAME |
A létrehozandó egyéni témakör neve. |
A szkript a az eventgrid topic create
parancs használatával létrehoz egy Event Grid-témakört vagy egyéni témakört. A sématípus felhőbeli eseménysémaként van megadva.
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
Feljegyzés
Ebben az oktatóanyagban mindenhol használjon felhőbeli eseménysémát .
Előfizetés hozzáadása a témakörhöz a függvény használatával
Ebben a lépésben létrehoz egy előfizetést az egyéni témakörhöz a korábban létrehozott Azure-függvény használatával.
Cserélje le a következő értékeket, és futtassa a szkriptet a Cloud Shellben. A szkript a az eventgrid event-subscription create
parancs használatával hoz létre egy Azure-függvény-előfizetést az egyéni témakörhöz. A parancsban a forrásazonosító a témakör erőforrás-azonosítója, a végpont pedig a függvény erőforrás-azonosítója. A végpont típusa Azure-függvényre van állítva, az eseménykézbesítési séma pedig a felhőbeli eseményséma.
Helyőrző | Leírás |
---|---|
FUNCTIONRESOURCEGROUP |
Az Azure Functions-alkalmazást tartalmazó erőforráscsoport neve. |
FUNCTIONSAPPNAME |
Az Azure Functions-alkalmazás neve. |
FUNCTIONNAME |
Az Azure-függvény neve. |
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
Névtér, ügyfelek, témakörterek és engedélykötések létrehozása
Kövesse a rövid útmutató utasításait: MQTT-üzenetek közzététele és előfizetése egy Event Grid-névtéren az Azure CLI-vel a következőre:
- Hozzon létre egy Event Grid-névteret.
- Hozzon létre két ügyfelet.
- Hozzon létre egy témakörterületet.
- Közzétevői és előfizetői engedélykötések létrehozása.
- Tesztelje az MQTTX-alkalmazással annak ellenőrzésére, hogy az ügyfelek képesek-e üzeneteket küldeni és fogadni.
Felügyelt identitás engedélyezése a névtérhez
Cserélje le a következő értéket, és futtassa a szkriptet az Event Grid névtér rendszer által hozzárendelt felügyelt identitásának engedélyezéséhez.
Helyőrző | Leírás |
---|---|
EVENTGRIDNAMESPACENAME |
Az Event Grid névterének neve. |
A szkript a az eventgrid namespace update
parancsot identitáskészlettel SystemAssigned
identity
használja.
nsName="EVENTGRIDNAMESPACENAME"
az eventgrid namespace update -g $rgName -n $nsName --topic-spaces-configuration "{state:Enabled}" --identity "{type:SystemAssigned}"
Ezután adja meg a névtér felügyelt identitásának a korábban létrehozott Event Grid egyéni témakör küldési engedélyét, hogy a névtér üzeneteket küldjön vagy irányítson az egyéni témakörbe. Ezt úgy teheti meg, hogy hozzáadja a felügyelt identitást az egyéni témakör Event Grid-adatküldő szerepköréhez.
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
A szkript a az role assignment create
névtér felügyelt identitásának azonosítóival és az egyéni témakörrel együtt használja a parancsot, és hozzárendeli az Event Grid-adatküldő szerepkört a névtér felügyelt identitásához az egyéni témakörben.
Útválasztási üzenetek konfigurálása az Azure-függvényhez egyéni témakör használatával
Ebben a lépésben úgy konfigurálja az Event Grid-névtér útválasztását, hogy a kapott üzenetek a létrehozott egyéni témakörhöz legyenek irányítva.
az eventgrid namespace update -g $rgName -n $nsName --topic-spaces-configuration "{state:Enabled,'routeTopicResourceId':$topicResourceId,'routingIdentityInfo':{type:SystemAssigned}}"
A szkript a az eventgrid namespace update
parancs használatával állítja be az útválasztási témakört és a felügyelt identitás típusát az események a témakörhöz való átirányításához.
MQTT-tesztüzenetek küldése az MQTTX használatával
Küldjön teszt MQTT-üzeneteket a névtérbe, és győződjön meg arról, hogy a függvény megkapja őket.
Kövesse a közzététel utasításait, és iratkozzon fel üzeneteket az MQTTX alkalmazás cikkével, és küldjön néhány tesztüzenetet az Event Grid névterébe.
Az események vagy üzenetek folyamata a következő:
Az MQTTX üzeneteket küld az Event Grid-névtér témakörterületére.
Az üzenetek a konfigurált egyéni témakörhöz lesznek irányítva.
Az üzeneteket a rendszer az esemény-előfizetésbe továbbítja, amely az Azure-függvény.
A naplózási funkcióval ellenőrizheti, hogy a függvény megkapta-e az eseményt.
Következő lépés
Tekintse meg a GitHub-adattár kódmintáit.