Azure Event Grid: integrare applicazioni usando eventi

Azure Event Grid è è un gestore eventi serverless altamente scalabile che è possibile usare per integrare applicazioni usando eventi. Gli eventi vengono recapitati da Event Grid ad applicazioni, servizi di Azure o qualsiasi endpoint a cui Event Grid possa accedere. Le origini di questi eventi possono essere le applicazioni, i servizi SaaS e i servizi Azure.

Grazie ad Azure Event Grid è possibile connettere soluzioni usando architetture basate su eventi. Un’architettura basata su eventi (event-driven architecture) usa eventi per comunicare occorrenze nello stato del sistema, ad esempio ad altre applicazioni o servizi. È possibile usare i filtri per instradare eventi specifici a endpoint diversi, trasmetterli a più endpoint e verificare che gli eventi vengano recapitati in modo affidabile.

Le origini eventi e i gestori eventi o le destinazioni sono mostrate nella seguente figura, che però non costituisce un elenco completo delle integrazioni supportate:


Figura 1: Origini event, gestori eventi e destinazioni gestite da Azure Event Grid

Alcuni dei servizi che permettono di inviare eventi ad Azure Event Grid sono:

Mentre i servizi Azure che attualmente supportano la gestione degli eventi provenienti da Azure Event Grid sono:

Concetti

Prima di iniziare, è opportuno tenere presenti cinque concetti relativi a Azure Event Grid:

  • Eventi: ciò che successo.
  • Origini di eventi: dove si è verificato l’evento.
  • Topic: l’endpoint a cui gli autori inviano gli eventi.
  • Sottoscrizioni agli eventi: l’endpoint o il meccanismo predefinito per instradare gli eventi, a volte a più gestori. Le sottoscrizioni vengono usate dai gestori anche per filtrare in modo intelligente gli eventi in ingresso.
  • Gestori di eventi: l’app o il servizio che reagisce all’evento.

Assicuratevi che Azure Event Grid sia disponibile per la vostra sottoscrizione. Per farlo, dal portale di Azure, selezionate la sottoscrizione e cercate nei Resource Provider la voce Microsoft.EventGrid. Assicuratevi che lo stato sia Registered.

Figura 2: Verifica che Event Grid sia disponibile per la sottoscrizione

Obiettivo di questo articolo è mostrare le seguenti attività:

  1. Sottoscrivere gli eventi per l’archiviazione di un BLOB in uno storage account.
  2. Attivare un evento caricando un file nello storage account.
  3. Ricevere una mail ogni volta che viene creato un evento.

Creazione di uno storage account

Per prima cosa ho creato un Storage Account e un container dentro il quale inserire i file. Per approfondimenti su come creare uno Storage Account e quali sono i tipo di dati che è in grado di memorizzare vi rimando anche alla lettura del mio articolo Azure Storage Account overview – ICT Power

Figura 3: Creazione di uno storage account e di un container per l’archiviazione di BLOB

Ho anche creato un coda, chiamata eventqueue, all’interno della quale verranno memorizzati gli eventi catturati da Azure Event Grid. Azure Storage Queue è un servizio per l’archiviazione di un numero elevato di messaggi. È possibile accedere ai messaggi ovunque ci si trovi con chiamate autenticate tramite HTTP o HTTPS. Un messaggio in coda avere dimensioni fino a 64 KB. Una coda può contenere milioni di messaggi, fino al limite di capacità totale dell’account di archiviazione. Le code vengono in genere usate per creare un backlog di lavoro da elaborare in modo asincrono.

Figura 4: Creazione di una Azure Storage Queue dive archiviare i messaggi

Figura 5: Azure Storage Queue creata

Nello Storage Account cliccate sul nodo Events e poi sulla voce + Event Subscription. Gli Azure Storage events consentono alle applicazioni di reagire agli eventi, ad esempio la creazione e l’eliminazione di BLOB, senza la necessità di usare codice complesso o servizi di polling costosi e inefficienti. La parte migliore è che si paga solo per ciò che si usa.

Figura 6: Creazione di una nuova Event Subscription per lo Storage Account

Gli eventi di archiviazione BLOB vengono inviati tramite Azure Data Grid ai sottoscrittori, ad esempio Funzioni di Azure, App per la logica di Azure o persino ad un listener HTTP. Vedere l’articolo Schema degli eventi di archiviazione BLOB per visualizzare l’elenco completo degli eventi supportati dall’archiviazione BLOB.

Inserite le informazioni richieste, indicando un endpoint per gli eventi, il tipo di eventi da monitorare ed eventualmente dei filtri. Nelle figure sotto sono riportati tutti i passaggi:

Figura 7: Tipi di evento da monitorare

Figura 8: Endpoint dove inviare gli eventi

Figura 9: Scelta dell’endpoint dove inviare gli eventi

Figura 10: Informazioni relative alla sottoscrizione degli eventi

In questo esempio ho voluto filtrare solo i file che hanno estensione .docx. Qualsiasi altro tipo di file verrà ignorato da Azure Event Grid e non creerà nessun evento.

Figura 11: Filtri sui tipi di BLOB da monitorare

Figura 12: Funzionalità aggiuntive della sottoscrizione

Figura 13: Definizione della Storage Queue message TTL

Figura 14: Editor avanzato per la creazione di regole della sottoscrizione eventi

Figura 15: Sottoscrizione eventi creata

Figura 16: Informazioni relative alla sottoscrizione eventi

Test di funzionamento

Per testare la sottoscrizione appena creata sarà sufficiente caricare un BLOB (con estensione.docx perché ho voluto applicare un filto al tipo di file da monitorare) nello storage account e verificare che sia stato creato un evento, memorizzato nella Azure Storage Queue. Nelle schermate sotto sono riportati i diversi passaggi:

Figura 17: Caricamento di un file nello Storage Account

Figura 18: Evento creato da Azure Event Grid nella Azure Storage Queue

Utilizzo di Azure Logic App per creare workflow con Azure Event Grid

Dopo aver catturato gli eventi è possibile utilizzarli per poter effettuare delle operazioni. In questa semplice demo vi mostro come creare una logic app che invia una mail ogni volta che si verifica un evento triggerato da Azure Event Grid.

Figura 19: Creazione di una Azure Logic App

Figura 20: Informazioni di riepilogo del wizard di creazione di una Azure Logic App

Figura 21: Utilizzo di un template vuoto per creare la Logic App

Figura 22: Ricerca di Event Grid come trigger della Logic App

Figura 23: Scelta del trigger

Figura 24: Scelta del tipo di evento da monitorare

Figura 25: Inserimento delle credenziali di Office 365 per la ricezione della mail

Figura 26: Configurazione della mail

Figura 27: Salvataggio della Logic App

Test di funzionamento

Adesso che avete creato la Azure Logic App, ogni volta che verrà caricato un file .docx nello Storage Account verrà triggerato un evento da Event Grid e verrà inviata una mail con le informazioni dell’evento.

Figura 28: Caricamento del file nello Storage Account

Figura 29: Salvataggio dell’evento in Azure Storage Queue

Figura 30: Ricezione della mail con le informazioni dell’evento catturato

Conclusioni

Un evento è la quantità minima di informazioni che descrive in modo completo qualcosa che si è verificato nel sistema. Ogni evento ha informazioni comuni, come: l’origine dell’evento, l’ora in cui l’evento si è verificato e un identificatore univoco. Azure Event Grid è un servizio di gestione degli eventi per il cloud che invia eventi a un endpoint che elabora i dati dell’evento e intraprende azioni. Il servizio è serverless ed è altamente scalabile, oltre ad avere un costo molto economico.