Share via


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.

  1. Másolja és illessze be a szkriptet egy szerkesztőbe.
  2. Cserélje le a következő értékeket.
  3. Válassza a Cloud Shell megnyitása lehetőséget.
  4. Váltson PowerShellről Bash-re (a Cloud Shell ablakának bal felső sarkában).
  5. 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:

  1. Hozzon létre egy Event Grid-névteret.
  2. Hozzon létre két ügyfelet.
  3. Hozzon létre egy témakörterületet.
  4. Közzétevői és előfizetői engedélykötések létrehozása.
  5. 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 SystemAssignedidentity 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ő:

  1. Az MQTTX üzeneteket küld az Event Grid-névtér témakörterületére.

  2. Az üzenetek a konfigurált egyéni témakörhöz lesznek irányítva.

  3. Az üzeneteket a rendszer az esemény-előfizetésbe továbbítja, amely az Azure-függvény.

  4. A naplózási funkcióval ellenőrizheti, hogy a függvény megkapta-e az eseményt.

    Képernyőkép egy Azure-függvény Naplóstream lapjáról.

Következő lépés

Tekintse meg a GitHub-adattár kódmintáit.