Vai al contenuto principale

AWS SNS: la guida completa alle notifiche in tempo reale

Questo tutorial ti guida in tutto, dalla creazione del primo topic all'implementazione di funzionalità avanzate come filtraggio dei messaggi e dead letter queue, con istruzioni passo passo ed esempi di codice pratici.
Aggiornato 29 set 2026  · 15 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

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

Amazon Simple Notification Service (SNS) offre una soluzione di messaggistica completamente gestita per disaccoppiare e scalare microservizi, sistemi distribuiti e applicazioni serverless. SNS ti permette di inviare messaggi a un gran numero di iscritti tramite diversi protocolli di trasporto, come HTTP/S, email, SMS e notifiche push su dispositivi mobili. AWS SNS si occupa di tutto il lavoro pesante della consegna dei messaggi, inclusi recapito affidabile, retry e backoff, così puoi concentrarti sullo sviluppo delle funzionalità core della tua applicazione.

AWS SNS segue un modello pubblica-sottoscrivi che è facile da comprendere e scalare. Un singolo messaggio pubblicato può essere distribuito a più endpoint contemporaneamente, il che rende SNS ideale per le architetture event-driven.

In questo tutorial, ti guiderò nella configurazione e nell'uso di AWS SNS per inviare notifiche su vari canali.

Che cos'è AWS SNS?

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

SNS funziona con un semplice modello publish-subscribe in cui i publisher inviano messaggi ai topic e i subscriber ricevono tali messaggi. Pensa a un topic SNS come a un canale di comunicazione: pubblichi messaggi su questo canale e chiunque sia iscritto riceve subito una notifica. Il bello del sistema è che i publisher non devono sapere chi riceve i loro messaggi e i subscriber non devono sapere chi li invia.

Potresti chiederti in cosa differisca da altri servizi di messaggistica AWS come Simple Queue Service (SQS). In breve, SQS usa un modello basato su code progettato principalmente per elaborare attività in modo asincrono, mentre SNS è pensato per inviare in broadcast messaggi a più destinatari contemporaneamente. Questo rende SNS perfetto per gli scenari in cui devi notificare molti sistemi di un evento appena avvenuto. Puoi approfondire le differenze nel post del blog SQS vs SNS. 

SNS supporta molteplici protocolli di consegna, che ti offrono flessibilità su come i tuoi iscritti ricevono le notifiche.

Caratteristiche principali di AWS SNS

SNS è ricco di funzionalità che lo rendono l'unico servizio di notifica di cui avrai bisogno. Eccone alcune:

  • Architettura fan-out: SNS può recapitare messaggi a migliaia di endpoint contemporaneamente, permettendoti di trasmettere aggiornamenti in tutto l'ecosistema applicativo con una singola chiamata API.
  • Molteplici protocolli di trasporto: 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 ogni messaggio. Con il filtraggio, i tuoi subscriber possono creare policy per ricevere solo i messaggi rilevanti, riducendo rumore e sovraccarico di elaborazione.
  • Archiviazione dei messaggi: se devi mantenere uno storico di tutte le notifiche inviate, SNS si integra con Amazon S3 per l'archiviazione e con Amazon Redshift per le analisi.
  • Tracciamento dello stato di consegna: puoi monitorare lo stato di consegna delle notifiche per assicurarti che raggiungano le destinazioni. È particolarmente utile per SMS e push mobili, dove la consegna non è garantita.
  • Crittografia: i tuoi dati sensibili restano protetti grazie al supporto di SNS per la crittografia lato server, che assicura la riservatezza dei messaggi durante la trasmissione.

Ma la parte migliore di SNS è la scalabilità. SNS si adatta automaticamente alle esigenze della tua applicazione. Non importa se invii dieci o dieci milioni di notifiche al giorno: il servizio si adegua senza richiedere interventi manuali.

A breve, ti mostrerò come configurare SNS.

Configurare AWS SNS

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

Passaggio 1: Creare un account AWS

Se non hai già un account AWS, devi crearne uno prima di iniziare a usare SNS.

Vai alla home page di AWS e clicca sul pulsante "Create an AWS Account" 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 dati della carta di credito: non preoccuparti, SNS ha un piano gratuito piuttosto generoso e non ti verrà addebitato nulla a meno che tu non superi quei limiti.

Una volta configurato l'account, sei pronto per proseguire. Ti consiglio però vivamente di creare un utente IAM dedicato invece di usare l'account root. Non è l'argomento di oggi, ma fai riferimento alle istruzioni ufficiali per le linee guida dettagliate.

Passaggio 2: Configurare SNS nella console di gestione AWS

Ora che hai un account AWS, è il momento 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
  • Clicca su "Services" nella barra di navigazione in alto e trova SNS nella categoria "Application Integration"
  • Vai direttamente alla console SNS

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

Image 1 - AWS SNS service page

Immagine 1 - Pagina del servizio AWS SNS

Una volta nel dashboard di SNS, vedrai un menu a sinistra con opzioni come "Topics", "Subscriptions" e "Mobile". Il dashboard ti dà una panoramica delle tue risorse SNS e dell'attività recente.

Se l'account è nuovo, sarà piuttosto vuoto — è normale. Ora creiamo il nostro primo topic SNS.

Passaggio 3: Creare un topic SNS

Un topic SNS è in pratica un canale di comunicazione a cui i publisher inviano messaggi e gli iscritti ascoltano.

Pensalo come una stazione radio: la stazione trasmette su una specifica frequenza (il topic) e chiunque sia sintonizzato su quella frequenza riceve la trasmissione. In termini SNS, la tua applicazione pubblica messaggi su un topic e tutti gli endpoint iscritti a quel topic li ricevono.

Ecco come creare il tuo primo topic SNS:

  1. Nella schermata mostrata in Immagine 1, inserisci un nome per il topic.
  2. Clicca sul pulsante "Next step".
  3. Seleziona "Standard" come tipo (i topic FIFO hanno casi d'uso diversi che tratteremo più avanti).
  4. (Opzionale) Inserisci un display name. Sarà incluso nei messaggi inviati a iscritti SMS o email.
  5. Lascia tutte le altre impostazioni ai valori predefiniti per ora.
  6. Clicca su "Create topic".

Se preferisci le immagini al testo, ecco come dovrebbe apparire la schermata:

Image 2 - SNS topic creation

Immagine 2 - Creazione di un topic SNS

Una volta soddisfatto dei valori, scorri verso il basso finché non vedi il pulsante "Create topic":

Image 3 - SNS topic creation (2)

Immagine 3 - Creazione di un topic SNS (2)

E questo è tutto! Il tuo topic SNS è pronto all'uso. Vedrai dettagli come l'ARN (Amazon Resource Name) del topic, che identifica in modo univoco il tuo topic:

Image 4 - Created topic details

Immagine 4 - Dettagli del topic creato

Il nuovo topic è pronto per le sottoscrizioni, ma al momento non ne ha, quindi qualsiasi messaggio tu pubblichi non andrà da nessuna parte. Niente panico: risolvi nel prossimo paragrafo aggiungendo iscritti.

Iscritti e sottoscrizioni SNS

Come dicevo, il tuo topic SNS è come una stazione radio. Al momento non ha ascoltatori, ma questo cambierà quando aggiungi iscritti per ricevere i tuoi messaggi.

Che cos'è un iscritto SNS?

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

Pensa all'analogia di una newsletter. Ogni volta che pubblichi una nuova edizione (messaggio), viene recapitata a tutti sulla tua mailing list. SNS rende questo processo automatico e scalabile, gestendo per te tutta la logistica della consegna.

AWS supporta un'ampia varietà di tipi di iscritti, offrendoti flessibilità su come i tuoi messaggi vengono elaborati. Ecco i principali:

  • Indirizzi email: invia notifiche in testo semplice direttamente alle caselle di posta.
  • Numeri SMS: recapita notifiche via SMS ai telefoni cellulari.
  • Code SQS: instrada i messaggi verso altri servizi AWS per un'ulteriore elaborazione.
  • Funzioni Lambda: attiva l'esecuzione di codice serverless in risposta alle notifiche.
  • Endpoint HTTP/HTTPS: invia messaggi ad applicazioni web o API.
  • Push mobile: recapita notifiche direttamente alle app mobili.

Ogni tipo di iscritto ha vantaggi e casi d'uso propri. Ad esempio, email e SMS sono ottimi per destinatari umani, mentre code SQS e funzioni Lambda sono più adatte alla comunicazione sistema-a-sistema.

Passaggio 1: Aggiungere un iscritto

Ora che sai cosa sono gli iscritti, aggiungiamone uno al tuo topic. Per questo tutorial userò l'email, perché è l'opzione più semplice da configurare.

Ecco come aggiungere un iscritto email al tuo topic SNS:

  1. Dalla pagina dei dettagli del topic (quella mostrata in Immagine 4), clicca sul pulsante "Create subscription".
  2. Nel menu a tendina "Protocol", seleziona "Email".
  3. Nel campo "Endpoint", inserisci l'indirizzo email che deve ricevere le notifiche.
  4. Lascia tutte le altre impostazioni ai valori predefiniti.
  5. Clicca su "Create subscription".

La schermata dovrebbe essere simile a questa:

Image 5 - Creating an email subscription

Immagine 5 - Creazione di una sottoscrizione email

Dopo aver cliccato su "Create subscription", AWS aggiungerà la sottoscrizione al tuo topic, ma sarà in stato "pending confirmation":

Image 6 - Pending confirmation state

Immagine 6 - Stato in attesa di conferma

Questa è una funzione di sicurezza importante: AWS vuole assicurarsi che il proprietario dell'indirizzo email desideri effettivamente ricevere queste notifiche.

Passaggio 2: Confermare le sottoscrizioni

Dopo aver aggiunto un iscritto, deve confermare di voler ricevere le notifiche dal tuo topic SNS.

Per le sottoscrizioni email, AWS invia automaticamente un'email di conferma all'indirizzo specificato. L'email contiene un link che il destinatario deve cliccare per attivare la sottoscrizione. Finché ciò non avviene, i messaggi pubblicati sul topic non verranno recapitati a questo endpoint.

Ecco come appare tipicamente l'email di conferma:

Image 7 - SNS confirmation email

Immagine 7 - Email di conferma SNS

Il destinatario deve semplicemente cliccare sul link "Confirm subscription" nell'email. Verrà reindirizzato a una pagina che conferma l'attivazione della sottoscrizione:

Image 8 - Subscription confirmation message

Immagine 8 - Messaggio di conferma sottoscrizione

Il processo è simile per gli iscritti SMS: AWS invia un SMS 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 Lambda e le code SQS possono essere configurate per la conferma automatica.

Puoi verificare lo stato delle sottoscrizioni cliccando sulla sezione "Subscriptions" nella barra laterale sinistra della console SNS. Le sottoscrizioni confermate mostreranno lo stato "Confirmed", mentre quelle in attesa "Pending confirmation".

Image 9 - Subscription status

Immagine 9 - Stato delle sottoscrizioni

Una volta confermata la sottoscrizione, sei pronto per iniziare a inviare messaggi! Qualsiasi messaggio pubblicato sul topic sarà recapitato a tutti gli iscritti confermati tramite il protocollo specificato.

Ecco tutto per la configurazione delle sottoscrizioni SNS. Nella prossima sezione imparerai come pubblicare messaggi sul tuo topic e testare che gli iscritti li ricevano correttamente.

Pubblicare messaggi sui topic SNS

Ora che hai configurato il tuo topic SNS e aggiunto iscritti, è il momento di inviare la tua prima notifica.

Passaggio 1: Pubblicare un messaggio

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

Per inviare il tuo primo messaggio, vai alla pagina dei dettagli del topic e clicca sul pulsante "Publish message" in alto a destra (vedi Immagine 4). Si aprirà il form di pubblicazione del messaggio dove puoi comporre la notifica. Vedrai campi per l'oggetto e il corpo del messaggio. L'oggetto è opzionale ma utile per le notifiche email, perché diventa l'oggetto della mail.

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

Image 10 - First message contents

Immagine 10 - Contenuto del primo messaggio

Quando sei soddisfatto del messaggio, scorri verso il basso e clicca sul pulsante "Publish message" in fondo al form:

Image 11 - Publishing a message via the console

Immagine 11 - Pubblicazione di un messaggio tramite console

Dopo il clic, SNS distribuisce immediatamente il messaggio a tutti gli iscritti confermati. Se hai configurato una sottoscrizione email, dovresti ricevere il messaggio di test nella tua casella in pochi secondi:

Image 12 - Message received in email

Immagine 12 - Messaggio ricevuto via email

Semplice, vero? Vediamo ora come personalizzarlo ulteriormente.

Passaggio 2: Inviare notifiche SMS ed email

SNS ti consente di personalizzare l'aspetto dei messaggi per i diversi tipi di iscritti.

Quando pubblichi un messaggio, noterai l'opzione "Message structure". Per impostazione predefinita, è su "Identical payload for all delivery protocols", il che significa che tutti gli iscritti ricevono esattamente lo stesso messaggio. Puoi anche selezionare "Custom payload for each delivery protocol" per adattare il formato del messaggio a ciascun tipo di iscritto.

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 oggetto e corpo del messaggio.

Image 13 - Payload customization

Immagine 13 - Personalizzazione del payload

Per le notifiche SMS, ricorda che c'è un limite di 160 caratteri. SNS recapiterà messaggi più lunghi, ma saranno considerati come messaggi multipli. Puoi anche impostare il tipo di messaggio SMS su "Promotional" o "Transactional", con impatto sull'ottimizzazione della consegna:

SMS options page in AWS SNS

Immagine 14 - Opzioni SMS

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

Passaggio 3: Usare 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'AWS Command Line Interface (CLI) semplifica l'invio di messaggi SNS dal terminale o dagli script di automazione. 

Supponendo che tu abbia installato e configurato AWS CLI, esegui questo comando per pubblicare un messaggio tramite CLI:

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

Image 15 - Message publishing through AWS CLI

Immagine 15 - Pubblicazione di un messaggio tramite AWS CLI

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

Image 16 - Message publishing through AWS CLI (2)

Immagine 16 - Pubblicazione di un messaggio tramite AWS CLI (2)

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

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

import boto3

# Initialize the SNS client
sns_client = boto3.client("sns", region_name="eu-central-1")

# Topic ARN (Amazon Resource Name)
topic_arn = "sns-arn"

# Publish a simple message
response = sns_client.publish(
    TopicArn=topic_arn, Message="Hello from Python!", Subject="Python Notification"
)

# Check if the message was sent successfully
if "MessageId" in response:
    print(f"Message published successfully! Message ID: {response['MessageId']}")

Image 17 - Message publishing through Python SDK

Immagine 17 - Pubblicazione di un messaggio tramite SDK Python

Ancora una volta, il messaggio viene recapitato all'istante nella mia casella:

Image 18 - Message publishing through Python SDK (2)

Immagine 18 - Pubblicazione di un messaggio tramite SDK Python (2)

Questo è tutto ciò che serve per pubblicare messaggi con SNS! Ora hai più modi per inviare notifiche, dall'interfaccia semplice della console alla pubblicazione programmatica con AWS CLI o SDK. 

> Nuovo ad AWS Boto in Python? Iscriviti al nostro corso e diventa operativo in un attimo.

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 alcune funzionalità avanzate che rendono SNS davvero potente.

Filtraggio dei messaggi SNS

Inviare la stessa notifica a tutti gli iscritti spesso porta gli endpoint a ricevere messaggi che non interessano.

Il filtraggio dei messaggi risolve il problema permettendo agli iscritti di filtrare i messaggi da ricevere in base agli attributi del messaggio. È come impostare i filtri nella posta elettronica: crei regole che determinano quali messaggi passano. Per SNS, queste regole si chiamano filter policies.

Per iniziare, puoi impostare filter policies sulle sottoscrizioni in modo che ricevano solo i messaggi pertinenti:

Image 19 - Notification filter policies

Immagine 19 - Policy di filtraggio delle notifiche

In questo esempio, l'iscritto riceverà notifiche solo per i messaggi che hanno un attributo order_value con un valore numerico pari o superiore a 1500.

Ora, per inviare una notifica del genere, puoi usare il seguente codice Python:

import boto3

# Initialize the SNS client
sns_client = boto3.client("sns", region_name="eu-central-1")

# Topic ARN (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)

Ecco cosa vedrai dopo l'esecuzione dello script Python:

Image 20 - Sending a notification through Python

Immagine 20 - Invio di una notifica tramite Python

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

Image 21 - Notification content

Immagine 21 - Contenuto della notifica

In breve, le filter policies ti permettono di inviare notifiche mirate senza modificare il codice di pubblicazione. Il bello è che il filtraggio avviene lato AWS, non nella tua applicazione, migliorando l'efficienza e riducendo il traffico inutile.

Dead letter queue (DLQ) in SNS

La consegna dei messaggi può talvolta fallire anche nei sistemi più affidabili.

Una Dead Letter Queue (DLQ) è una coda Amazon SQS speciale in cui SNS può inviare i messaggi che non sono stati recapitati agli iscritti. Questo succede in genere quando un iscritto non è disponibile o restituisce un errore. Invece di perdere per sempre questi messaggi falliti, SNS li reindirizza alla DLQ, dove puoi analizzarli in seguito o ritentare la consegna.

Configurare una DLQ prevede due passaggi. Per prima cosa, crea una coda SQS da usare come DLQ:

Image 22 - Creating an SQS queue

Immagine 22 - Creazione di una coda SQS

Poi configura la tua sottoscrizione SNS per usare questa coda per i messaggi non recapitabili:

Image 23 - Adding redrive policy to the SQS queue

Immagine 23 - Aggiungere una redrive policy alla coda SQS

Questa configurazione richiede le autorizzazioni corrette, perché SNS deve poter inviare messaggi alla coda SQS. Nella console AWS puoi impostarlo con una semplice checkbox, ma se usi CloudFormation o altri strumenti IaC, dovrai aggiungere le autorizzazioni IAM appropriate.

Con una DLQ in funzione, puoi monitorare i fallimenti di consegna e intervenire quando necessario. Ad esempio, potresti impostare un allarme che si attiva quando compaiono messaggi nella DLQ, segnalando potenziali problemi con i subscriber, ma questo esula dallo scopo di questa sezione.

Usare 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 topic 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: scala automaticamente in base al volume dei messaggi.

Per iniziare, crea una funzione Lambda:

Image 24 - Creating a Lambda function

Immagine 24 - Creazione di una funzione Lambda

Quindi, inserisci un codice simile a questo:

def lambda_handler(event, context):
    # SNS messages come in the 'Records' array
    for record in event["Records"]:
        # Extract the message
        message = record["Sns"]["Message"]
        subject = record["Sns"]["Subject"]
        timestamp = record["Sns"]["Timestamp"]

        # Process the message
        print(f"Received message: {message}")
        print(f"Subject: {subject}")
        print(f"Timestamp: {timestamp}")

        # Your business logic here
        # For example, store the message in a database
        # or trigger another AWS service
        print("ALL DONE!")

    # Return success
    return {"statusCode": 200, "body": "Message processed successfully"}

Image 25 - Lambda function code

Immagine 25 - Codice della funzione Lambda

Quando il codice è pronto, clicca sul pulsante "Add trigger" per collegare la funzione Lambda a SNS:

Image 26 - Connecting SNS to Lambda

Immagine 26 - Connessione di SNS a Lambda

La funzione è ora collegata alla coda, quindi puoi inviare una notifica di test:

Image 27 - Test notification

Immagine 27 - Notifica di test

Le funzioni Lambda ti permettono di monitorare i log, quindi puoi vedere le invocazioni recenti della funzione, risultato dell'invio di una notifica:

Image 28 - Lambda function logs

Immagine 28 - Log della funzione Lambda

Le funzioni Lambda possono fare praticamente qualsiasi cosa con questi messaggi: salvarli 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 event-driven. Puoi saperne di più sulle funzioni Lambda nel tutorial Introduzione ad AWS Lambda. 

A seguire, imparerai le basi del monitoraggio e del logging in SNS.

Monitoraggio e logging dell'attività SNS

Tenere traccia dell'attività SNS è essenziale per mantenere un sistema di notifica affidabile.

Usare Amazon CloudWatch con SNS

Amazon CloudWatch fornisce monitoraggio completo per tutti i servizi AWS, SNS incluso. Quando configuri CloudWatch con SNS, ottieni visibilità su metriche operative importanti come tassi di consegna dei messaggi, fallimenti e pattern d'uso delle API.

Per iniziare con il monitoraggio CloudWatch per SNS, vai alla console 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:

  • NumberOfMessagesPublished: traccia quanti messaggi vengono pubblicati sui tuoi topic.
  • NumberOfNotificationsDelivered: mostra i recapiti riusciti ai subscriber.
  • NumberOfNotificationsFailed: evidenzia i tentativi di consegna falliti, che potrebbero indicare problemi di configurazione.
  • PublishSize: misura la dimensione dei messaggi pubblicati, aiutandoti a rimanere entro i limiti del servizio.

Image 29 - Default Cloudwatch dashboard for SNS

Immagine 29 - Dashboard CloudWatch predefinita per SNS

Impostare gli allarmi CloudWatch ti permette di rispondere rapidamente ai potenziali problemi prima che impattino gli utenti. Ad esempio, potresti creare un allarme che si attiva quando i fallimenti di consegna superano una certa soglia:

  1. Nella console CloudWatch, vai alla sezione "Alarms".
  2. Clicca su "Create alarm" e seleziona la metrica SNS che vuoi monitorare.
  3. Definisci la soglia (ad es., più di 5 consegne fallite in 5 minuti).
  4. Configura le azioni di notifica, come l'invio di un alert al team operativo.

Se preferisci le immagini alle istruzioni testuali, inizia creando un allarme per una metrica di interesse, come NumberOfNotificationsFailed. Imposta le soglie che attiveranno l'allarme:

Image 30 - Alarm creation

Immagine 30 - Creazione di un allarme

E questo è tutto: l'allarme è stato creato ed è attivo:

Image 31 - Alarm creation (2)

Immagine 31 - Creazione di un allarme (2)

Questi allarmi possono fare la differenza tra affrontare proattivamente un problema e venirne a conoscenza da utenti scontenti.

Revisione dei log SNS

AWS CloudTrail cattura tutta l'attività API nel tuo account AWS, incluse le azioni eseguite all'interno del servizio SNS.

Ogni operazione eseguita sui tuoi topic SNS — tramite console, CLI o SDK — genera una voce nei log di CloudTrail. Questi log forniscono informazioni preziose per analisi di sicurezza, tracciamento delle modifiche alle risorse e audit di conformità.

Per accedere ai log SNS in CloudTrail:

  1. Apri la console CloudTrail nel tuo account AWS (probabilmente dovrai creare una nuova trail).
  2. Vai su "Event history" per vedere l'attività SNS recente.
  3. Filtra gli eventi selezionando "Event source" e digitando "sns.amazonaws.com".

Di nuovo, se le istruzioni testuali non bastano, fai riferimento alle immagini qui sotto. Inizia creando una nuova trail:

Image 32 - Creating a new trail

Immagine 32 - Creazione di una nuova trail

Poi, in "Event history", filtra gli eventi per includere solo quelli per SNS:

Image 33 - Filtering logs

Immagine 33 - Filtraggio dei log

I log vengono archiviati automaticamente in un bucket S3, il che significa che questo approccio fornisce uno storage permanente e abilita capacità di interrogazione più avanzate.

> Come funziona l'archiviazione su AWS? Leggi la nostra guida su S3 ed EFS.

In conclusione, combinando le metriche di CloudWatch con i log di CloudTrail, crei un sistema di monitoraggio completo che aiuta a garantire l'affidabilità della tua infrastruttura SNS.

Best practice per l'uso di AWS SNS

Ora conosci le funzionalità di base e avanzate di AWS SNS. Mancano da trattare le best practice per creare topic e inviare messaggi.

Proteggere i topic SNS

La sicurezza dovrebbe essere una priorità quando configuri la tua infrastruttura SNS. Senza i controlli adeguati, i tuoi topic potrebbero essere esposti ad accessi non autorizzati, con un enorme rischio per la sicurezza.

AWS Identity and Access Management (IAM) offre gli strumenti per mettere in sicurezza i topic SNS. Inizia creando policy che seguano il principio del privilegio minimo: concedi solo i permessi specifici necessari per ciascun utente o servizio. Ad esempio, potresti voler consentire ad alcune applicazioni solo di pubblicare messaggi, mentre ad altre solo di iscriversi ai topic.

Ecco un esempio di policy IAM che limita la pubblicazione a un topic specifico:

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

Puoi anche usare le policy del topic per controllare quali account AWS possono iscriversi ai tuoi topic. È particolarmente importante se condividi dati tra confini organizzativi.

Non dimenticare di eseguire audit regolari delle autorizzazioni usando AWS CloudTrail e rimuovere gli accessi non più necessari. 

Gestire il volume dei messaggi

Volumi elevati di messaggi possono sopraffare gli iscritti se non gestiti correttamente. Qui diventa essenziale combinare SNS con altri servizi AWS.

Un pattern molto diffuso è l'architettura "fanout", in cui pubblichi messaggi su un topic SNS a cui sono iscritte più code SQS. Ogni coda può poi alimentare diversi sistemi di elaborazione al proprio ritmo. Questo disaccoppia i publisher dai consumer e fornisce un buffer durante i picchi di traffico.

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

Ridurre i costi

SNS è conveniente, ma i costi possono crescere rapidamente all'aumentare del volume dei messaggi. Alcune scelte strategiche possono aiutarti a tenerli sotto controllo.

Innanzitutto, sii selettivo sui protocolli di sottoscrizione. Gli endpoint HTTP/HTTPS sono in genere l'opzione più economica. Le notifiche email, pur comode, andrebbero usate con giudizio perché hanno costi più alti per messaggio.

Il filtraggio dei messaggi è un altro potente strumento di risparmio. Implementando filter policies sulle sottoscrizioni, ti assicuri che i messaggi vengano recapitati solo agli iscritti interessati. Ad esempio, se hai un topic per tutti gli avvisi di sistema, potresti voler far ricevere ai tecnici di reperibilità solo gli alert critici durante il loro turno, non ogni notifica:

# Subscribe with a filter policy
response = sns.subscribe(
    TopicArn="sns-arn",
    Protocol="email",
    Endpoint="oncall@example.com",
    Attributes={"FilterPolicy": '{"severity": ["critical"]}'},
)

Infine, rivedi regolarmente l'utilizzo di SNS in AWS Cost Explorer e cerca opportunità per consolidare i topic o rimuovere sottoscrizioni inutilizzate. Risorse inutilizzate o duplicate non solo aggiungono costi non necessari, ma complicano anche la tua architettura.

Seguendo queste best practice, creerai un'implementazione SNS sicura, scalabile ed economica: tutto ciò che serve per un servizio di notifica affidabile senza spese impreviste o problemi di sicurezza.

Riepilogo su AWS SNS

Se ti servono notifiche in tempo reale tra applicazioni distribuite, AWS SNS è la scelta giusta. È facile da usare, si integra bene con gli altri servizi AWS e scala all'infinito in base alle tue esigenze.

Il modello publish-subscribe di SNS rende semplice implementare sistemi di notifica che possono raggiungere più canali contemporaneamente. Dalla creazione di topic e gestione degli iscritti all'adozione di funzionalità avanzate come filtraggio dei messaggi e dead letter queue, ora hai le conoscenze per costruire un'infrastruttura di notifica robusta.

Hai anche imparato gli aspetti critici di monitoraggio, sicurezza e gestione dei costi che assicurano che la tua implementazione SNS resti affidabile ed efficiente in produzione.

Man mano che le applicazioni adottano architetture event-driven, servizi come SNS diventano sempre più preziosi. Che tu stia costruendo un semplice sistema di alert o complessi microservizi, i pattern in questo tutorial offrono 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 usare DataCamp per prepararti agli esami di certificazione AWS - AWS Cloud Practitioner (CLF-C02).

FAQs

Che cos'è AWS SNS e in cosa differisce da SQS?

AWS SNS (Simple Notification Service) è un servizio di messaggistica completamente gestito che ti consente di inviare notifiche dai publisher a più iscritti. A differenza di SQS (Simple Queue Service), che segue un modello basato su coda in cui ogni messaggio è elaborato da un singolo consumer, SNS usa un modello publish-subscribe che trasmette un singolo messaggio a molti destinatari contemporaneamente. Questa differenza fondamentale rende SNS ideale per le notifiche di evento e SQS più adatto all'elaborazione di task.

Quali tipi di endpoint possono iscriversi ai topic SNS?

AWS SNS supporta un'ampia gamma di endpoint per gli iscritti, inclusi indirizzi email, numeri di telefono per SMS, code SQS, funzioni Lambda, endpoint HTTP/HTTPS e notifiche push mobili. Questa varietà ti offre flessibilità nella consegna ed elaborazione delle notifiche, permettendoti di raggiungere sia destinatari umani (via email o SMS) sia altri sistemi (via Lambda, SQS o endpoint HTTP) con lo stesso messaggio pubblicato.

Come posso proteggere i miei topic SNS?

Proteggere i topic SNS significa implementare controlli di accesso adeguati tramite policy IAM che seguano il principio del privilegio minimo. Puoi limitare chi può pubblicare sui topic e gestire le sottoscrizioni, e usare le policy del topic per controllare quali account AWS possono iscriversi. Per i dati sensibili, AWS SNS supporta la crittografia lato server per proteggere il contenuto dei messaggi durante la trasmissione. Audit di sicurezza regolari con i log di CloudTrail aiutano a identificare tentativi di accesso non autorizzati o potenziali vulnerabilità nell'implementazione SNS.

Come posso implementare il filtraggio dei messaggi in SNS?

Il filtraggio dei messaggi in SNS consente agli iscritti di ricevere solo le notifiche che interessano. Ciò avviene tramite filter policies che gli iscritti definiscono in base agli attributi del messaggio. Quando pubblichi messaggi con attributi specifici (come valore dell'ordine, regione o livello di priorità), SNS confronta questi attributi con la policy di ciascun iscritto e consegna il messaggio solo se c'è corrispondenza. Il filtraggio avviene lato AWS, non nella tua applicazione, migliorando l'efficienza e riducendo il traffico di messaggi inutile.

Come funzionano le dead letter queue (DLQ) con SNS?

Le Dead Letter Queue fungono da rete di sicurezza per i fallimenti nella consegna dei messaggi in SNS. Quando un messaggio non può essere recapitato a un iscritto (tipicamente perché l'iscritto non è disponibile o restituisce un errore), SNS può reindirizzarlo a una coda SQS designata invece di perderlo del tutto. Questo sistema DLQ ti consente di catturare, analizzare e potenzialmente ritentare le consegne fallite. È particolarmente prezioso per le notifiche mission-critical in cui la perdita di messaggi potrebbe avere impatti significativi sul business, offrendo visibilità su problemi di consegna altrimenti difficili da rilevare.


Dario Radečić's photo
Author
Dario Radečić
LinkedIn
Senior Data Scientist con base in Croazia. Top Tech Writer con oltre 700 articoli pubblicati, per più di 10 milioni di visualizzazioni. Autore del libro Machine Learning Automation with TPOT.
Argomenti
AWS

Scopri di più su AWS con questi corsi!

Corso

Concetti di AWS

2 ore
52.6K
Scopri il mondo di Amazon Web Services (AWS) e capisci perché è al top nel cloud computing.
Vedi i dettagliRight Arrow
Inizia Il Corso
Mostra altroRight Arrow
Correlato

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

Mostra AltroMostra Altro