Tutorial: Instradare i messaggi MQTT da Griglia di eventi di Azure ad Funzioni di Azure con argomenti personalizzati - Azure portal

Griglia di eventi di Azure può ricevere messaggi MQTT dai tuoi client IoT e instradarli ad altri servizi Azure per l'elaborazione. Questo tutorial ti mostra come instradare i messaggi MQTT ricevuti da uno spazio di Griglia di eventi di Azure verso una funzione Azure utilizzando un argomento personalizzato di Event Grid. Instradare i messaggi verso una funzione ti permette di eseguire codice personalizzato, come trasformare o filtrare la telemetria, ogni volta che arriva un messaggio, senza dover gestire alcun server.

In questa esercitazione, imparerai a:

  • Crea una funzione Azure che utilizzi un trigger Event Grid.
  • Creare un argomento personalizzato di Griglia di eventi.
  • Aggiungi un abbonamento che invia eventi alla funzione.
  • Creare uno spazio dei nomi di Event Grid con client, spazi dei topic e associazioni di autorizzazioni.
  • Abilita un'identità gestita per il namespace.
  • Configura il routing dal namespace all'argomento personalizzato.
  • Invia messaggi MQTT di prova e verifica che la funzione li riceva.

Prerequisiti

  • Un account Azure con una sottoscrizione attiva. Se non ne hai uno, crea un account gratis prima di iniziare.
  • L'app MQTTX per pubblicare e abbonarsi ai messaggi MQTT di test.

Crea una funzione Azure usando un trigger Event Grid

Importante

Crea tutte le risorse di questo tutorial nella stessa regione.

Segui le istruzioni in Create an Azure function usando Visual Studio Code, ma usa Azure Event Grid Trigger invece di HTTP Trigger.

Il codice dovrebbe essere simile all'esempio seguente:

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

Questa funzione di Azure viene usata come gestore eventi per la sottoscrizione di un argomento più avanti in questa esercitazione.

Annotazioni

Questo tutorial è stato testato con una funzione di Azure che utilizza uno stack di runtime .NET 8.0 (isolato).

Creare un argomento di Griglia di eventi (argomento personalizzato)

Creare un argomento di Griglia di eventi. Vedere Creare un argomento personalizzato usando il portale di Azure. Quando si crea l'argomento Event Grid, nella scheda Avanzate, per Schema eventi, selezionare Schema eventi Cloud v1.0.

Screenshot che mostra la pagina Avanzate della procedura guidata di creazione dell’argomento.

Annotazioni

Usare Cloud Event Schema v1.0 ovunque in questa esercitazione.

Aggiungi un abbonamento all'argomento usando la funzione

In questo passaggio, crea un abbonamento all'argomento Event Grid utilizzando la funzione Azure che hai creato in precedenza.

  1. Nella pagina Argomento di Griglia di eventi selezionare Sottoscrizioni.

    Screenshot che mostra la pagina Sottoscrizioni di eventi per un argomento.

  2. Nella pagina Crea Abbonamento Evento , completa questi passaggi:

    1. Immettere un nome per la sottoscrizione di eventi.

    2. Per Schema evento, selezionare Schema evento cloud v1.0.

    3. Per Tipo di endpoint, selezionare Funzione di Azure.

    4. Selezionare Configura un endpoint.

      Screenshot che mostra la pagina Crea sottoscrizione di eventi.

  3. Nella pagina Seleziona la funzione Azure, completa questi passaggi:

    1. Per Sottoscrizione selezionare la sottoscrizione di Azure.

    2. Per Gruppo di risorse, selezionare il gruppo di risorse che contiene la tua funzione di Azure.

    3. Per l'app per le funzioni, seleziona l'app per le funzioni che contiene la funzione.

    4. Per Slot selezionare Produzione.

    5. Per Funzione, seleziona la tua funzione Azure.

    6. Selezionare Confermare la selezione.

      Screenshot che mostra la pagina Seleziona funzione di Azure.

  4. Nella pagina Crea sottoscrizione di eventi selezionare Crea.

  5. Nella pagina Sottoscrizioni eventi dovrebbe essere visualizzata la sottoscrizione creata.

Creare uno spazio dei nomi, client, spazi argomenti e associazioni di autorizzazioni

Segui le istruzioni di Quickstart: Pubblica e iscriviti ai messaggi MQTT utilizzando uno spazio di nomi Event Grid con portale Azure per:

  1. Creare uno spazio dei nomi di Griglia di eventi.
  2. Creare due client.
  3. Creare uno spazio di argomenti.
  4. Creare associazioni di autorizzazioni per server di pubblicazione e sottoscrittore.
  5. Prova utilizzando l'app MQTTX per confermare che i clienti possono inviare e ricevere messaggi.

Abilitare l'identità gestita per lo spazio dei nomi

In questa sezione, si abilita l'identità gestita assegnata al sistema per il namespace della Griglia Eventi e poi si concede all'identità il permesso di invio all'argomento personalizzato della Griglia di Eventi in modo che possa instradare i messaggi verso l'argomento personalizzato. Concedi questo permesso aggiungendo l'identità gestita al ruolo Event Grid Data Sender sull'argomento personalizzato.

  1. Nella pagina Event Grid Namespace, selezionare Identità. Selezionare e quindi Salva.

    Screenshot che mostra l'Event Grid Namespace con la scheda Identity selezionata.

  2. Vai all'argomento Event Grid per il tuo argomento personalizzato Event Grid.

  3. Selezionare Controllo di accesso sulla barra di spostamento a sinistra.

  4. Nella pagina Controllo di accesso selezionare Aggiungi e quindi Aggiungi assegnazione di ruolo.

    Screenshot che mostra la pagina Controllo di accesso.

  5. Nella pagina Ruolo della procedura guidata Aggiungi assegnazione di ruolo, selezionare il ruolo Mittente dati di Event Grid e selezionare Avanti.

    Schermata che mostra la pagina Ruolo della procedura guidata Aggiungi assegnazione di ruolo.

  6. Nella pagina Membri della pagina Aggiungi assegnazione di ruolo selezionare Identità gestita e quindi selezionare Seleziona membri.

    Screenshot che mostra la pagina Membri della procedura guidata Aggiungi assegnazione di ruolo.

  7. Nella pagina Selezione identità gestite seguire questa procedura:

    1. Seleziona la tua sottoscrizione di Azure.

    2. Per Identità gestita, selezionare Spazio dei nomi di Griglia di eventi.

    3. Selezionare l'identità gestita con lo stesso nome dello spazio dei nomi di Griglia di eventi.

    4. Scegli Seleziona.

      Screenshot che mostra la pagina Seleziona identità gestite.

  8. Nella pagina Aggiungi assegnazione di ruolo selezionare Avanti.

  9. Nella pagina Rivedi e assegna rivedere le impostazioni e quindi selezionare Rivedi e assegna.

Configurare il routing dei messaggi a una funzione Azure tramite un topic personalizzato.

In questa sezione, configura il routing per il namespace Event Grid in modo che instradasca i messaggi ricevuti verso l'argomento personalizzato che hai creato.

  1. Nella pagina del namespace di Event Grid, selezionare Routing.

  2. Nella pagina Routing selezionare Abilita routing.

  3. In Tipo di argomento selezionare Argomento personalizzato.

  4. Per Argomento selezionare l'argomento personalizzato creato per questa esercitazione.

  5. Per Identità gestita per il recapito selezionare Assegnata dal sistema.

  6. Selezionare Applica.

    Screenshot che mostra la pagina Routing relativa a uno spazio dei nomi.

Invia messaggi MQTT di prova usando MQTTX

Inviare messaggi MQTT di test allo spazio dei nomi e verificare che la funzione li riceva. Segui le istruzioni in Pubblica e iscriviti usando l'app MQTTX per inviare alcuni messaggi di test allo spazio di Event Grid.

Quando invii messaggi, questi scorrono nel sistema in quest'ordine:

  1. MQTTX invia messaggi allo spazio argomenti dello spazio dei nomi di Griglia di eventi.
  2. Event Grid instrada i messaggi verso l'argomento personalizzato che hai configurato.
  3. Event Grid inoltra i messaggi all'iscrizione all'evento, che è la funzione Azure.

Per confermare la consegna, usa la funzione di logging per verificare che la funzione riceva l'evento.

Screenshot che mostra la pagina Flusso di log per una funzione di Azure.

Passo successivo