AWS SNS: La Guida Completa alle Notifiche in Tempo Reale

Gestire notifiche in tempo reale tra le tue applicazioni può essere una grande sfida – almeno senza il giusto servizio di messaggistica.

Amazon Simple Notification Service (SNS) è qui per fornire una soluzione di messaggistica completamente gestita per disaccoppiare e scalare microservizi, sistemi distribuiti e applicazioni serverless. SNS ti consente di inviare messaggi a un gran numero di iscritti tramite più protocolli di trasporto, come HTTP/S, email, SMS e notifiche push mobili. AWS SNS gestisce tutto il lavoro pesante della consegna dei messaggi, inclusa la consegna affidabile, i tentativi di riconsegna e le funzionalità di backoff, offrendoti la libertà di concentrarti sulla costruzione delle funzionalità principali della tua applicazione.

AWS SNS segue un modello publish-subscribe che è sia facile da scalare che da comprendere. Un singolo messaggio pubblicato può essere distribuito a più endpoint simultaneamente, il che rende SNS ideale per architetture basate su eventi.

In questo tutorial, ti guiderò attraverso la configurazione e l’uso di AWS SNS per inviare notifiche attraverso vari canali.

Cosa è AWS SNS?

Amazon Simple Notification Service (SNS) è il servizio di messaggistica pub/sub gestito di AWS che ti consente di disaccoppiare microservizi, sistemi distribuiti e applicazioni serverless.

SNS funziona su un semplice modello di pubblicazione-sottoscrizione in cui i publisher inviano messaggi a topic, e gli abbonati ricevono quei messaggi. Pensa a un topic SNS come a un canale di comunicazione: pubblichi messaggi su questo canale e chiunque sia iscritto viene notificato immediatamente. La bellezza di questo sistema è che i publisher non devono sapere chi riceve i loro messaggi e gli abbonati non devono sapere chi li invia.

Potresti chiederti in che modo questo differisca da altri servizi di messaggistica AWS come Simple Queue Service (SQS). In poche parole, SQS utilizza un modello basato su coda principalmente progettato per elaborare attività in modo asincrono, mentre SNS si concentra sulla trasmissione di messaggi a più destinatari contemporaneamente. Questo rende SNS perfetto per scenari in cui è necessario notificare molti sistemi riguardo a un evento appena verificatosi. Puoi saperne di più sulle differenze nel post del blog SQS vs SNS.

SNS supporta più protocolli di consegna, il che ti offre flessibilità su come i tuoi abbonati ricevono le notifiche.

Caratteristiche principali di AWS SNS

SNS è ricco di funzionalità che lo rendono l’unico servizio di notifiche di cui avrai bisogno. Elencherò un paio:

  • Architettura Fan-out: SNS può consegnare messaggi a migliaia di endpoint simultaneamente, il che ti consente di trasmettere aggiornamenti in tutto il tuo ecosistema applicativo con una singola chiamata API.
  • Protocollo di trasporto multiplo: Non sei limitato a un solo modo di inviare messaggi. SNS supporta endpoint HTTP/HTTPS, email, SMS, notifiche push mobili e persino code SQS come endpoint di sottoscrizione.
  • Filtraggio dei messaggi: Non tutti gli iscritti hanno bisogno di tutti i messaggi. Con il filtraggio dei messaggi, i tuoi iscritti possono creare politiche di filtro per ricevere solo i messaggi che li interessano, riducendo il rumore e il sovraccarico di elaborazione.
  • Archiviazione dei messaggi: Se hai bisogno di tenere un registro di tutte le notifiche inviate, sarai felice di sapere che SNS si integra con Amazon S3 per l’archiviazione dei messaggi e con Amazon Redshift per l’analisi.
  • Tracciamento dello stato della consegna: Puoi monitorare lo stato della consegna delle tue notifiche per assicurarti che raggiungano le loro destinazioni. Questo è particolarmente utile per SMS e notifiche push mobili dove la consegna non è garantita.
  • Crittografia: I tuoi dati sensibili rimangono protetti grazie al supporto di SNS per la crittografia lato server, che garantisce che i tuoi messaggi rimangano riservati durante la trasmissione.

Ma la parte migliore di SNS deve essere scalabilità. SNS scala automaticamente in base alle esigenze della tua applicazione. Non importa se stai inviando dieci o dieci milioni di notifiche al giorno, il servizio si adatta di conseguenza senza richiedere alcun intervento manuale.

Prossimo, ti mostrerò come impostare SNS.

Impostazione di AWS SNS

Prima di poter inviare la tua prima notifica con SNS, dovrai seguire alcuni passaggi di configurazione per avere tutto in ordine.

Passo 1: Creazione di un account AWS

Se non hai già un account AWS, dovrai crearne uno prima di poter iniziare a utilizzare SNS.

Vai alla homepage di AWS e clicca sul pulsante “Crea un account AWS” nell’angolo in alto a destra. Dovrai fornire il tuo indirizzo email, creare una password e inserire alcune informazioni di base sull’account. AWS richiederà anche i dettagli della tua carta di credito – non preoccuparti, SNS ha un piano gratuito piuttosto generoso e non ti verrà addebitato nulla a meno che non superi quei limiti.

Una volta che il tuo account è stato configurato, sei pronto per procedere oltre. Tuttavia, ti consiglio vivamente di creare un utente IAM dedicato invece di utilizzare il tuo account root. Questo è al di fuori dell’argomento dell’articolo di oggi, ma fai riferimento alle Istruzioni ufficiali per linee guida dettagliate.

Passo 2: Configurare SNS nella console di gestione AWS

Ora che hai un account AWS, è tempo di accedere al servizio SNS.

Accedi alla Console di gestione AWS con le tue credenziali e trova SNS. Puoi farlo in tre modi:

  • Digita “SNS” nella barra di ricerca in cima alla console
  • Fai clic su “Servizi” nella barra di navigazione in alto e trova SNS sotto la categoria “Integrazione Applicazioni”
  • Vai direttamente allaconsole SNS

Indipendentemente dal modo, questa è la schermata che dovresti vedere:

Immagine 1 – Pagina del servizio AWS SNS

Una volta che sei nel cruscotto SNS, vedrai un menu sul lato sinistro con opzioni come “Argomenti”, “Sottoscrizioni” e “Mobile”. Il cruscotto ti offre una panoramica delle tue risorse SNS e delle attività recenti.

Questo sarà abbastanza vuoto per un nuovo account — è previsto. Ora, creiamo il nostro primo argomento SNS.

Passo 3: Creare un argomento SNS

Un argomento SNS è fondamentalmente un canale di comunicazione al quale i publisher inviano messaggi e gli iscritti ascoltano.

Pensalo come a una stazione radio – la stazione trasmette su una frequenza specifica (l’argomento), e chiunque sintonizzato su quella frequenza riceve la trasmissione. In termini di SNS, la tua applicazione pubblica messaggi su un argomento, e tutti gli endpoint iscritti a quell’argomento ricevono quei messaggi.

Ecco come creare il tuo primo argomento SNS:

  1. Sullo schermo che hai visto in Immagine 1, inserisci un nome per l’argomento.
  2. Fai clic sul pulsante “Passo successivo”.
  3. Seleziona “Standard” per il tipo (gli argomenti FIFO hanno casi d’uso diversi che tratteremo più avanti).
  4. (Facoltativo) Inserisci un nome visualizzato. Questo sarà incluso nei messaggi inviati agli iscritti via SMS o email.
  5. Lascia tutte le altre impostazioni ai loro valori predefiniti per ora.
  6. Clicca su “Crea argomento”.

Se preferisci le immagini al testo, questa è l’aspetto che dovrebbe avere il tuo schermo:

Immagine 2 – Creazione dell’argomento SNS

Una volta che sei soddisfatto dei valori, scorri verso il basso fino a vedere il pulsante “Crea argomento”:

Immagine 3 – Creazione dell’argomento SNS (2)

E questo è tutto! Il tuo argomento SNS è ora pronto per essere utilizzato. Vedrai dettagli come l’ARN dell’argomento (Amazon Resource Name), che identifica univocamente il tuo argomento:

Immagine 4 – Dettagli dell’argomento creato

Il tuo nuovo argomento è pronto per le iscrizioni, ma al momento non ne ha, il che significa che i messaggi che pubblichi non andranno da nessuna parte. Non preoccuparti, risolverai questo problema nella sezione successiva quando aggiungerai gli iscritti.

Iscritti e iscrizioni SNS

Come ho detto in precedenza, il tuo argomento SNS è come una stazione radio. Attualmente non ha ascoltatori, ma questo cambierà quando aggiungerai iscritti per ricevere i tuoi messaggi.

Che cos’è un iscritto SNS?

Un iscritto è qualsiasi endpoint che riceve notifiche dal tuo argomento SNS quando viene pubblicato un messaggio.

Considera l’analogia di una newsletter. Ogni volta che pubblichi una nuova edizione (messaggio), viene consegnata a tutti nella tua lista di distribuzione. SNS rende questo processo automatico e scalabile, e gestisce tutta la logistica di consegna per te.

AWS supporta una vasta gamma di tipi di abbonati, il che ti offre flessibilità nel modo in cui i tuoi messaggi vengono elaborati. Elencherò i principali tipi di seguito:

  • Indirizzi email: Invia notifiche in testo semplice direttamente alle caselle di posta elettronica.
  • Numeri SMS: Consegna notifiche di messaggi di testo ai telefoni cellulari.
  • Code SQS: Inoltra messaggi ad altri servizi AWS per ulteriori elaborazioni.
  • Funzioni Lambda: Attiva l’esecuzione di codice serverless in risposta a notifiche.
  • Punti finali HTTP/HTTPS: Invia messaggi a applicazioni web o API.
  • Push mobile: Invia notifiche direttamente alle app mobili.

Ogni tipo di abbonato ha i propri vantaggi e casi d’uso. Ad esempio, l’email e gli SMS sono ottimi per i destinatari umani, mentre le code SQS e le funzioni Lambda sono migliori per la comunicazione tra sistemi.

Passo 1: Aggiungere un abbonato

Ora che hai capito cosa sono gli abbonati, aggiungiamone uno al tuo argomento. Per questo tutorial, userò l’email poiché è il più semplice da configurare.

Ecco come aggiungere un abbonato email al tuo argomento SNS:

  1. Dalla pagina dei dettagli del tuo argomento (quella mostrata in Immagine 4), fai clic sul pulsante “Crea abbonamento”.
  2. Nel menu a discesa “Protocollo”, seleziona “Email”.
  3. Nel campo “Endpoint”, inserisci l’indirizzo email che dovrebbe ricevere le notifiche.
  4. Lascia tutte le altre impostazioni ai loro valori predefiniti.
  5. Fai clic su “Crea abbonamento”.

Il tuo schermo dovrebbe apparire più o meno così:

Immagine 5 – Creazione di un abbonamento email

Una volta cliccato su “Crea abbonamento”, AWS aggiungerà l’abbonamento al tuo argomento, ma sarà in uno stato di “conferma in sospeso”:

Immagine 6 – Stato di conferma in sospeso

Questa è una funzione di sicurezza importante, poiché AWS vuole assicurarsi che il proprietario dell’indirizzo email desideri realmente ricevere queste notifiche.

Passo 2: Conferma degli abbonamenti

Dopo aver aggiunto un abbonato, devono confermare di voler ricevere notifiche dal tuo argomento SNS.

Per le iscrizioni via email, AWS invia automaticamente un’email di conferma all’indirizzo che hai specificato. L’email contiene un link che il destinatario deve cliccare per attivare l’iscrizione. Fino a quando ciò non accade, nessun messaggio pubblicato nel topic sarà consegnato a questo endpoint.

Ecco come appare un’email di conferma tipica:

Immagine 7 – Email di conferma SNS

Il destinatario deve semplicemente cliccare sul link “Conferma iscrizione” nell’email. Verrà indirizzato a una pagina che conferma che la sua iscrizione è ora attiva:

Immagine 8 – Messaggio di conferma dell’iscrizione

Il processo è simile per gli abbonati SMS – AWS invia un messaggio di testo con un link di conferma che il destinatario deve seguire. Gli endpoint HTTP/HTTPS devono rispondere a una richiesta di conferma da parte di AWS, mentre le risorse AWS come le funzioni Lambda e le code SQS possono essere configurate per la conferma automatica.

Puoi controllare lo stato delle tue iscrizioni facendo clic sulla sezione “Iscrizioni” nella barra laterale sinistra della console SNS. Le iscrizioni confermate mostreranno uno stato di “Confermato”, mentre quelle in attesa di conferma mostreranno “In attesa di conferma”.

Immagine 9 – Stato dell’iscrizione

Una volta che la tua iscrizione è confermata, sei pronto per iniziare a inviare messaggi! Qualsiasi messaggio pubblicato sull’argomento verrà consegnato a tutti gli abbonati confermati utilizzando il loro protocollo specificato.

Questo è tutto ciò che c’è da sapere per impostare le sottoscrizioni SNS. Nella prossima sezione, imparerai come pubblicare messaggi sul tuo argomento e testare che i tuoi iscritti li ricevano correttamente.

Pubblicazione di Messaggi su Argomenti SNS

Ora che hai impostato il tuo argomento SNS e aggiunto gli iscritti, è tempo di inviare la tua prima notifica.

Passo 1: Pubblicazione di un messaggio

Un buon modo per iniziare è pubblicare un messaggio tramite la Console AWS.

Per inviare il tuo primo messaggio, vai alla pagina di dettaglio del tuo argomento e fai clic sul pulsante “Pubblica messaggio” in alto a destra (vedi Immagine 4). Questo aprirà il modulo di pubblicazione del messaggio dove potrai creare la tua notifica. Vedrai dei campi per l’oggetto e il corpo del messaggio. L’oggetto è facoltativo ma utile per le notifiche email poiché diventa l’oggetto dell’email.

Per un semplice messaggio di prova, potresti inserire qualcosa del genere:

Immagine 10 – Contenuti del primo messaggio

Quando sei soddisfatto del tuo messaggio, scorri verso il basso e fai clic sul pulsante “Pubblica messaggio” in fondo al modulo:

Immagine 11 – Pubblicazione di un messaggio tramite la console

Dopo aver fatto clic, SNS distribuisce immediatamente il tuo messaggio a tutti gli iscritti confermati. Se hai impostato un’iscrizione via email, dovresti ricevere il messaggio di test nella tua casella di posta entro pochi secondi:

Immagine 12 – Messaggio ricevuto via email

Semplice, vero? Vediamo ora come personalizzarlo ulteriormente.

Passo 2: Invio di notifiche SMS ed email

SNS ti consente di personalizzare come appaiono i tuoi messaggi a diversi tipi di iscritti.

Quando pubblichi un messaggio, noterai l’opzione “Struttura del messaggio”. Per impostazione predefinita, è impostata su “Payload identico per tutti i protocolli di consegna”, il che significa che tutti gli abbonati ricevono esattamente lo stesso messaggio. Tuttavia, puoi anche selezionare “Payload personalizzato per ogni protocollo di consegna”, che ti consente di adattare il formato del messaggio per ogni tipo di abbonato.

Per le notifiche email, hai due opzioni di formato:

  • Email-JSON: Invia il payload JSON grezzo all’endpoint email.
  • Email: Invia un’email formattata con l’oggetto e il corpo del messaggio.

Immagine 13 – Personalizzazione del payload

Per le notifiche SMS, tieni presente che c’è un limite di 160 caratteri. SNS consegnerà messaggi più lunghi, ma saranno trattati come più messaggi. Puoi anche impostare il tipo di messaggio SMS su “Promozionale” o “Transazionale”, il che influisce sull’ottimizzazione della consegna:

Immagine 14 – Opzioni SMS

Ora sai come inviare e personalizzare le notifiche via email tramite AWS Console. Prossimo, imparerai a fare lo stesso tramite CLI e Python.

Passo 3: Utilizzare l’AWS CLI o SDK per pubblicare messaggi

La console è ottima per i test manuali, ma nel mondo reale, vorrai pubblicare messaggi in modo programmatico.

L’Interfaccia della linea di comando AWS (CLI) rende semplice inviare messaggi SNS dal tuo terminale o da script di automazione.

Assumendo che tu abbia installato e configurato l’AWS CLI, esegui questo comando per pubblicare un messaggio tramite la CLI:

aws sns publish --topic-arn "sns-arn" --subject "CLI Notification" --message "Hello from the AWS CLI!"

Immagine 15 – Pubblicazione di messaggi tramite AWS CLI

In un attimo, vedrai un messaggio simile nella tua casella di posta:

Immagine 16 – Pubblicazione di messaggi tramite AWS CLI (2)

Per applicazioni più avanzate, gli SDK di AWS forniscono accesso programmatico a SNS in molti linguaggi di programmazione.

Ecco un semplice esempio per pubblicare un messaggio utilizzando Python con la libreria boto3:

import boto3 # Inizializza il client SNS sns_client = boto3.client("sns", region_name="eu-central-1") # Topic ARN (Amazon Resource Name) topic_arn = "sns-arn" # Pubblica un semplice messaggio response = sns_client.publish( TopicArn=topic_arn, Message="Hello from Python!", Subject="Python Notification" ) # Controlla se il messaggio è stato inviato con successo if "MessageId" in response: print(f"Message published successfully! Message ID: {response['MessageId']}")

Immagine 17 – Pubblicazione di messaggi tramite Python SDK

Ancora una volta, il messaggio viene consegnato istantaneamente nella mia casella di posta:

Immagine 18 – Pubblicazione di messaggi tramite Python SDK (2)

Questo è tutto per la pubblicazione di messaggi con SNS! Ora hai diversi modi per inviare notifiche, dall’interfaccia console semplice alla pubblicazione programmatica con l’AWS CLI o SDK.

> Nuovo su AWS Boto in Python? Iscriviti al nostro corso per diventare esperto in poco tempo.

Nella prossima sezione, esploreremo alcune funzionalità avanzate di SNS che porteranno le tue notifiche al livello successivo.

Funzionalità avanzate di SNS

Finora, hai imparato le basi di SNS. In questa sezione, vedrai un paio di funzionalità avanzate che rendono SNS davvero potente.

Filtraggio dei messaggi SNS

Inviare la stessa notifica a tutti gli abbonati spesso porta a far ricevere ai punti finali messaggi che non li interessano.

Il filtraggio dei messaggi risolve questo problema consentendo agli abbonati di filtrare quali messaggi ricevono in base agli attributi del messaggio. Pensalo come impostare filtri per le email: crei regole che determinano quali messaggi possono passare. Per SNS, queste regole si chiamano politiche di filtro.

Per cominciare, puoi impostare politiche di filtro sulle tue sottoscrizioni in modo che ricevano solo messaggi pertinenti:

Immagine 19 – Politiche di filtro delle notifiche

In questo esempio, l’abbonato riceverà solo notifiche per i messaggi che hanno un attributo order_value con un valore numerico di 1500 e superiori.

Ora, per inviare una tale notifica, puoi utilizzare il seguente codice Python:

import boto3 # Inizializza il client SNS sns_client = boto3.client("sns", region_name="eu-central-1") # ARN del topic (Amazon Resource Name) topic_arn = "arn:aws:sns:eu-central-1:105036517833:TestTopic" response = sns_client.publish( TopicArn=topic_arn, Message="A new high-value order has been placed", Subject="New Order Notification", MessageAttributes={ "order_value": {"DataType": "Number", "StringValue": "2000"}, "region": {"DataType": "String", "StringValue": "EU"}, "category": {"DataType": "String", "StringValue": "Electronics"}, }, ) print(response)

Questo è ciò che vedrai dopo aver eseguito lo script Python:

Immagine 20 – Invio di una notifica tramite Python

Solo se il valore di order_value è 1500 o superiore, riceverai la notifica:

Immagine 21 – Contenuto della notifica

In breve, le politiche di filtro ti consentono di inviare notifiche mirate senza modificare il tuo codice di pubblicazione. La parte migliore è che il filtraggio avviene lato AWS, non nella tua applicazione, il che migliora l’efficienza e riduce il traffico non necessario.

Code di messaggi morti SNS (DLQ)

La consegna dei messaggi può a volte fallire anche con i sistemi più affidabili.

Una Dead Letter Queue (DLQ) è una coda Amazon SQS speciale in cui SNS può inviare messaggi che non sono stati recapitati ai loro abbonati. Questo di solito accade quando un abbonato non è disponibile o restituisce un errore. Invece di perdere questi messaggi non riusciti per sempre, SNS li reindirizza alla DLQ, dove puoi analizzarli in seguito o riprovare a consegnarli.

Impostare una DLQ comporta due passaggi. Prima di tutto, crea una coda SQS per fungere da DLQ:

Immagine 22 – Creazione di una coda SQS

Quindi, configura il tuo abbonamento SNS per utilizzare questa coda per i messaggi non consegnabili:

Immagine 23 – Aggiunta della politica di ridrive alla coda SQS

Questa configurazione richiede i permessi appropriati, poiché SNS deve essere in grado di inviare messaggi alla coda SQS. Nella console AWS, puoi configurarlo tramite una semplice casella di controllo, ma se stai utilizzando CloudFormation o altri strumenti di infrastruttura come codice, dovrai aggiungere i permessi IAM appropriati.

Con una DLQ in atto, puoi monitorare i fallimenti di consegna e intraprendere azioni quando necessario. Ad esempio, potresti impostare un allarme che si attiva quando i messaggi iniziano ad apparire nella tua DLQ, avvisandoti di potenziali problemi con i tuoi abbonati, ma questo è al di fuori dello scopo di questa sezione.

Utilizzare AWS Lambda con SNS

Le funzioni Lambda aprono un mondo di possibilità per l’elaborazione dei messaggi SNS.

Quando iscrivi una funzione Lambda a un argomento SNS, la funzione viene attivata automaticamente ogni volta che viene pubblicato un messaggio. L’approccio serverless di Lambda significa che non devi gestire alcuna infrastruttura per l’elaborazione dei messaggi, poiché si scala automaticamente in base al volume dei messaggi.

Per iniziare, prima crea una funzione Lambda:

Immagine 24 – Creazione di una funzione Lambda

Quindi, compila con codice simile a questo:

def lambda_handler(event, context): # I messaggi SNS arrivano nell'array 'Records' for record in event["Records"]: # Estrai il messaggio message = record["Sns"]["Message"] subject = record["Sns"]["Subject"] timestamp = record["Sns"]["Timestamp"] # Elabora il messaggio print(f"Received message: {message}") print(f"Subject: {subject}") print(f"Timestamp: {timestamp}") # La tua logica di business qui # Ad esempio, memorizza il messaggio in un database # o attiva un altro servizio AWS print("ALL DONE!") # Restituisci successo return {"statusCode": 200, "body": "Message processed successfully"}

Immagine 25 – Codice della funzione Lambda

Una volta che il tuo codice è pronto, fai clic sul pulsante “Aggiungi attivatore” per collegare la funzione Lambda a SNS:

Immagine 26 – Collegare SNS a Lambda

La funzione è ora collegata alla coda, il che significa che puoi inviare una notifica di prova:

Immagine 27 – Notifica di test

Le funzioni Lambda ti consentono di monitorare i log, il che significa che puoi vedere le recenti invocazioni della funzione – il risultato dell’invio di una notifica:

Immagine 28 – Log delle funzioni Lambda

Le funzioni Lambda possono fare praticamente qualsiasi cosa con questi messaggi – archiviarli in un database, attivare altri servizi AWS, inviare email o persino chiamare API esterne. Questo rende SNS e Lambda una combinazione potente per costruire architetture basate su eventi. Puoi saperne di più sulle funzioni Lambda nel tutorial Introduzione ad AWS Lambda.

Successivamente, imparerai le basi del monitoraggio e della registrazione di SNS.

Monitoraggio e registrazione dell’attività di SNS

Tenere traccia delle tue attività SNS è essenziale per mantenere un sistema di notifiche affidabile.

Utilizzare Amazon CloudWatch con SNS

Amazon CloudWatch offre un monitoraggio completo per tutti i tuoi servizi AWS, incluso SNS. Quando configuri CloudWatch con SNS, ottieni visibilità su metriche operative importanti come i tassi di consegna dei messaggi, i fallimenti e i modelli di utilizzo dell’API.

Per iniziare con il monitoraggio di CloudWatch per SNS, accedi alla console di CloudWatch nel tuo account AWS. Da lì, puoi accedere alle metriche SNS preconfigurate che AWS raccoglie automaticamente per te.

Le metriche SNS più preziose da monitorare includono:

  • NumeroDiMessaggiPubblicati: Tiene traccia di quanti messaggi vengono pubblicati nei tuoi argomenti.
  • NumeroDiNotificheConsegnate: Mostra le consegne di messaggi riuscite agli abbonati.
  • NumeroDiNotificheFallite: Sottolinea i tentativi di consegna falliti, che potrebbero indicare problemi di configurazione.
  • DimensionePubblicazione: Misura la dimensione dei messaggi pubblicati, aiutandoti a rimanere all’interno dei limiti di servizio.

Immagine 29 – Dashboard Cloudwatch predefinita per SNS

Impostare allarmi CloudWatch ti consente di rispondere rapidamente a potenziali problemi prima che impattino i tuoi utenti. Ad esempio, potresti voler creare un allarme che si attiva quando i fallimenti nella consegna dei messaggi superano una certa soglia:

  1. Nella console CloudWatch, vai alla sezione “Allarmi”.
  2. Clicca su “Crea allerta” e seleziona il metrica SNS che vuoi monitorare.
  3. Definisci la tua soglia (ad esempio, più di 5 consegne non riuscite in 5 minuti).
  4. Configura le azioni di notifica, come inviare un avviso a un team operativo.

Se preferisci le immagini alle istruzioni, inizia creando un allerta per un metrica di interesse, come NumberOfNotificationsFailed. Imposta soglie che attiveranno l’allerta:

Immagine 30 – Creazione dell’allerta

E questo è tutto – l’allerta è ora creata e attiva:

Immagine 31 – Creazione di allarmi (2)

Questi allarmi possono fare la differenza tra affrontare proattivamente un problema e apprenderne l’esistenza da utenti insoddisfatti.

Revisione dei log SNS

AWS CloudTrail cattura tutte le attività API nel tuo account AWS, comprese le azioni eseguite all’interno del servizio SNS.

Ogni operazione eseguita sui tuoi argomenti SNS—sia tramite la console, CLI o SDK—genera un’entrata nei log di CloudTrail. Questi log forniscono informazioni preziose per l’analisi della sicurezza, il tracciamento delle modifiche delle risorse e l’audit di conformità.

Per accedere ai log SNS in CloudTrail:

  1. Apri la console di CloudTrail nel tuo account AWS (probabilmente dovrai creare un nuovo trail).
  2. Naviga a “Cronologia eventi” per vedere le attività recenti di SNS.
  3. Filtra gli eventi selezionando “Origine evento” e digitando “sns.amazonaws.com”.

Ancora una volta, se le istruzioni testuali non sono sufficienti, fai riferimento alle immagini sottostanti. Inizia creando un nuovo trail:

Immagine 32 – Creazione di un nuovo trail

Poi, sotto “Cronologia eventi”, filtra gli eventi per includere solo quelli per SNS:

Immagine 33 – Filtraggio dei log

I log vengono automaticamente memorizzati in un bucket S3, il che significa che questo approccio fornisce uno storage permanente per i tuoi log e consente capacità di query più avanzate.

> Come funziona lo storage su AWS? Leggi la nostra guida su S3 ed EFS.

Per concludere, combinando le metriche di CloudWatch con i log di CloudTrail, crei un sistema di monitoraggio completo che aiuta a garantire che la tua infrastruttura SNS operi in modo affidabile.

Migliori pratiche per l’uso di AWS SNS

Ora conosci le funzionalità di base e avanzate di AWS SNS. Ciò che rimane da discutere sono le migliori pratiche per creare argomenti e inviare messaggi.

Protezione dei temi SNS

La sicurezza dovrebbe essere una priorità assoluta quando si configura la propria infrastruttura SNS. Senza controlli adeguati, i tuoi temi potrebbero essere vulnerabili ad accessi non autorizzati, il che rappresenta un enorme rischio per la sicurezza.

AWS Identity and Access Management (IAM) fornisce gli strumenti necessari per proteggere i tuoi temi SNS. Inizia creando politiche che seguano il principio del minor privilegio: concedi solo le autorizzazioni specifiche necessarie per ciascun utente o servizio. Ad esempio, potresti voler che alcune applicazioni possano solo pubblicare messaggi mentre altre hanno solo bisogno di iscriversi ai temi.

Ecco un esempio di politica IAM che limita la pubblicazione a un tema specifico:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sns:Publish", "Resource": "sns-arn" } ] }

Puoi anche utilizzare le politiche dei temi per controllare quali account AWS possono iscriversi ai tuoi temi. Questo è particolarmente importante se stai condividendo dati oltre i confini organizzativi.

Non dimenticare di controllare regolarmente i permessi utilizzando AWS CloudTrail e rimuovere l’accesso che non è più necessario.

Gestire il volume dei messaggi

I volumi elevati di messaggi possono sopraffare gli iscritti se non gestiti correttamente. È qui che combinare SNS con altri servizi AWS diventa essenziale.

Un modello popolare è l’architettura “fanout”, in cui pubblichi messaggi in un argomento SNS che ha più code SQS iscritte. Ogni coda può quindi alimentare diversi sistemi di elaborazione al proprio ritmo. Questo disaccoppia i tuoi editori dai tuoi consumatori e fornisce un buffer durante i picchi di traffico.

Per le esigenze di elaborazione in tempo reale, considera di iscrivere funzioni Lambda ai tuoi argomenti. Lambda scala automaticamente con il tuo volume di messaggi, eliminando la necessità di provisioning e gestione dei server.

Ridurre i costi

Anche se SNS è conveniente, le spese possono accumularsi rapidamente man mano che il volume dei messaggi cresce. Alcune scelte strategiche possono aiutare a mantenere i costi sotto controllo.

Per prima cosa, sii selettivo riguardo ai tuoi protocolli di abbonamento. Gli endpoint HTTP/HTTPS sono generalmente l’opzione più conveniente. Le notifiche via email, sebbene comode, dovrebbero essere utilizzate con cautela poiché comportano costi più elevati per messaggio.

Il filtraggio dei messaggi è un altro potente strumento di risparmio sui costi. Implementando politiche di filtro sui tuoi abbonamenti, ti assicuri che i messaggi vengano consegnati solo agli abbonati interessati. Ad esempio, se hai un argomento per tutti gli avvisi di sistema, potresti voler far sì che i tuoi ingegneri di turno ricevano solo gli avvisi critici durante il loro turno, non ogni notifica:

# Iscriviti con una politica di filtro response = sns.subscribe( TopicArn="sns-arn", Protocol="email", Endpoint="[email protected]", Attributes={"FilterPolicy": '{"severity": ["critical"]}'}, )

Infine, rivedi regolarmente il tuo utilizzo di SNS nell’AWS Cost Explorer e cerca opportunità per consolidare argomenti o rimuovere abbonamenti non utilizzati. Risorse non utilizzate o duplicate non solo aggiungono costi superflui, ma complicano anche la tua architettura.

Seguendo queste migliori pratiche, creerai un’implementazione di SNS sicura, scalabile ed economica: tutto ciò di cui hai bisogno per avere un servizio di notifica affidabile senza spese impreviste o preoccupazioni per la sicurezza.

Riassumendo AWS SNS

Se hai bisogno di notifiche in tempo reale attraverso applicazioni distribuite, non cercare oltre AWS SNS. È facile da usare, si integra bene con altri servizi AWS e scala all’infinito per soddisfare le tue esigenze.

Il modello publish-subscribe in SNS rende semplice implementare sistemi di notifica che possono raggiungere più canali contemporaneamente. Dalla creazione di argomenti e gestione degli iscritti all’implementazione di funzionalità avanzate come il filtraggio dei messaggi e le code di messaggi non consegnati, ora hai le conoscenze per costruire un’infrastruttura di notifica robusta.

Hai anche appreso gli aspetti critici del monitoraggio, della sicurezza e della gestione dei costi che assicurano che la tua implementazione di SNS rimanga affidabile ed efficiente in ambienti di produzione.

Man mano che le applicazioni continuano ad adottare architetture basate su eventi, servizi come SNS diventano sempre più preziosi. Che tu stia costruendo un semplice sistema di allerta o microservizi complessi, i modelli in questo tutorial forniscono una base per una comunicazione efficace tra i componenti del tuo sistema.

Per saperne di più su AWS, segui questi corsi di DataCamp:

Puoi anche utilizzare DataCamp per prepararti agli esami di certificazione AWS – Praticante Cloud AWS (CLF-C02).

Source:
https://www.datacamp.com/tutorial/aws-sns