Last chance! 50% off DataCamp Premium
Sale ends in
Realtime meldingen beheren over al je applicaties heen kan een enorme uitdaging zijn—tenminste zonder de juiste messagingservice.
Amazon Simple Notification Service (SNS) biedt een volledig beheerde messagingoplossing om microservices, gedistribueerde systemen en serverloze applicaties te ontkoppelen en te schalen. Met SNS kun je berichten sturen naar een groot aantal subscribers via meerdere transportprotocollen, zoals HTTP/S, e-mail, sms en mobiele pushmeldingen. AWS SNS neemt al het zware werk van berichtbezorging voor zijn rekening, inclusief betrouwbare levering, retries en backoff-functionaliteit, zodat jij je kunt richten op het bouwen van de kernfuncties van je applicatie.
AWS SNS volgt een publish-subscribe-model dat zowel eenvoudig te schalen als te begrijpen is. Eén gepubliceerd bericht kan gelijktijdig naar meerdere endpoints worden gedistribueerd, wat SNS ideaal maakt voor event-driven architecturen.
In deze tutorial laat ik je zien hoe je AWS SNS instelt en gebruikt om meldingen over verschillende kanalen te versturen.
Amazon Simple Notification Service (SNS) is AWS' beheerde pub/sub-messagingservice waarmee je microservices, gedistribueerde systemen en serverloze applicaties kunt ontkoppelen.
SNS werkt met een eenvoudig publish-subscribe-model waarbij publishers berichten naar topics sturen, en subscribers die berichten ontvangen. Zie een SNS-topic als een communicatiekanaal: je publiceert berichten op dit kanaal, en iedereen die geabonneerd is, krijgt direct een melding. Het mooie is dat publishers niet hoeven te weten wie hun berichten ontvangt, en subscribers niet hoeven te weten wie ze verstuurt.
Je vraagt je misschien af hoe dit verschilt van andere AWS-messagingservices zoals Simple Queue Service (SQS). Kort gezegd gebruikt SQS een queue-gebaseerd model, primair ontworpen voor het asynchroon verwerken van taken, terwijl SNS zich richt op het broadcasten van berichten naar meerdere ontvangers tegelijk. Dat maakt SNS perfect voor scenario's waarin je veel systemen moet informeren over een net opgetreden event. Je kunt meer over de verschillen lezen in de SQS vs SNS-blogpost.
SNS ondersteunt meerdere leveringsprotocollen, wat je flexibiliteit geeft in hoe je subscribers meldingen ontvangen.
SNS zit boordevol functies waardoor het de enige notificatieservice is die je nodig hebt. Ik noem er een paar:
Maar het mooiste aan SNS is de schaalbaarheid. SNS schaalt automatisch mee met de behoeften van je applicatie. Het maakt niet uit of je tien of tien miljoen meldingen per dag verstuurt—de service past zich aan zonder handmatige interventie.
Straks laat ik je zien hoe je SNS instelt.
Voordat je je eerste melding met SNS kunt versturen, moet je een paar stappen doorlopen om alles gereed te maken.
Als je nog geen AWS-account hebt, moet je er een aanmaken voordat je SNS kunt gebruiken.
Ga naar de AWS-homepage en klik rechtsboven op de knop "Create an AWS Account". Je moet je e-mailadres opgeven, een wachtwoord aanmaken en enkele basisgegevens invullen. AWS vraagt ook om je creditcardgegevens—maak je geen zorgen, SNS heeft een vrij royaal gratis tier en je wordt pas gefactureerd als je die limieten overschrijdt.
Zodra je account is ingesteld, kun je verder. Ik raad echter sterk aan om een aparte IAM-gebruiker te maken in plaats van je rootaccount te gebruiken. Dat valt buiten de scope van dit artikel, maar verwijs naar de officiële instructies voor uitgebreide richtlijnen.
Nu je een AWS-account hebt, is het tijd om de SNS-service te openen.
Log in op de AWS Management Console met je inloggegevens en zoek SNS. Dat kan op drie manieren:
Hoe je er ook komt, dit is het scherm dat je zou moeten zien:

Afbeelding 1 - AWS SNS-servicepagina
Eenmaal in het SNS-dashboard zie je links een menu met opties zoals "Topics", "Subscriptions" en "Mobile". Het dashboard geeft een overzicht van je SNS-resources en recente activiteit.
Voor een nieuw account is dit behoorlijk leeg—dat is te verwachten. Laten we nu ons eerste SNS-topic aanmaken.
Een SNS-topic is in feite een communicatiekanaal waar publishers berichten naartoe sturen en subscribers naar luisteren.
Denk aan een radiostation: het station zendt uit op een specifieke frequentie (het topic), en iedereen die daarop is afgestemd, ontvangt de uitzending. In SNS-terminologie publiceert je applicatie berichten naar een topic en alle endpoints die op dat topic geabonneerd zijn, ontvangen die berichten.
Zo maak je je eerste SNS-topic aan:
Ben je meer van de plaatjes? Zo zou je scherm eruit moeten zien:

Afbeelding 2 - SNS-topic aanmaken
Als je tevreden bent met de waarden, scroll naar beneden tot je de knop "Create topic" ziet:

Afbeelding 3 - SNS-topic aanmaken (2)
En dat is het! Je SNS-topic is nu klaar voor gebruik. Je ziet details zoals de topic ARN (Amazon Resource Name), die je topic uniek identificeert:

Afbeelding 4 - Gemaakte topicdetails
Je nieuwe topic is klaar voor subscriptions, maar heeft er nog geen, wat betekent dat berichten nergens heen gaan. Geen zorgen—dat los je in de volgende sectie op wanneer je subscribers toevoegt.
Zoals ik eerder zei, is je SNS-topic als een radiostation. Het heeft nu nog geen luisteraars, maar dat verandert zodra je subscribers toevoegt om je berichten te ontvangen.
Een subscriber is elk endpoint dat meldingen ontvangt van je SNS-topic wanneer een bericht wordt gepubliceerd.
Denk aan de analogie van een nieuwsbrief. Elke keer dat je een nieuwe editie (bericht) publiceert, wordt die bezorgd bij iedereen op je mailinglijst. SNS automatiseert en schaalt dit proces, en regelt de volledige bezorglogistiek voor je.
AWS ondersteunt een breed scala aan subscribe-typen, wat je flexibiliteit geeft in hoe je berichten worden verwerkt. De belangrijkste typen:
Elk subscribertype heeft eigen voordelen en use-cases. E-mail en sms zijn bijvoorbeeld ideaal voor menselijke ontvangers, terwijl SQS-queues en Lambda-functies beter zijn voor systeem-naar-systeem-communicatie.
Nu je weet wat subscribers zijn, voegen we er één toe aan je topic. Voor deze tutorial gebruik ik e-mail omdat dat het eenvoudigst is om op te zetten.
Zo voeg je een e-mail-subscriber toe aan je SNS-topic:
Je scherm zou er ongeveer zo uit moeten zien:

Afbeelding 5 - Een e-mailabonnement aanmaken
Zodra je op "Create subscription" klikt, voegt AWS de subscription toe aan je topic, maar in de status "pending confirmation":

Afbeelding 6 - Status in afwachting van bevestiging
Dit is een belangrijke beveiligingsfunctie: AWS wil zeker weten dat de eigenaar van het e-mailadres deze meldingen inderdaad wil ontvangen.
Na het toevoegen van een subscriber moet die bevestigen dat hij meldingen van je SNS-topic wil ontvangen.
Voor e-mailabonnementen stuurt AWS automatisch een bevestigingsmail naar het opgegeven adres. De e-mail bevat een link waarop de ontvanger moet klikken om het abonnement te activeren. Totdat dit gebeurt, worden geen berichten die naar het topic worden gepubliceerd aan dit endpoint geleverd.
Zo ziet een typische bevestigingsmail eruit:

Afbeelding 7 - SNS-bevestigingsmail
De ontvanger hoeft alleen op de link "Confirm subscription" in de e-mail te klikken. Er verschijnt dan een pagina die bevestigt dat het abonnement nu actief is:

Afbeelding 8 - Bericht met abonnementsbevestiging
Het proces is vergelijkbaar voor sms-subscribers—AWS stuurt een tekstbericht met een bevestigingslink die de ontvanger moet volgen. HTTP/HTTPS-endpoints moeten reageren op een bevestigingsverzoek van AWS, terwijl AWS-resources zoals Lambda-functies en SQS-queues geconfigureerd kunnen worden voor automatische bevestiging.
Je kunt de status van je subscriptions controleren door in de linkerzijbalk van de SNS-console op "Subscriptions" te klikken. Bevestigde subscriptions tonen de status "Confirmed", terwijl wachtende "Pending confirmation" tonen.

Afbeelding 9 - Abonnementsstatus
Zodra je abonnement is bevestigd, kun je berichten gaan sturen! Elk bericht dat naar het topic wordt gepubliceerd, wordt geleverd aan alle bevestigde subscribers via hun gekozen protocol.
Dat is alles wat nodig is om SNS-subscriptions op te zetten. In de volgende sectie leer je hoe je berichten naar je topic publiceert en test of je subscribers ze correct ontvangen.
Nu je je SNS-topic hebt ingesteld en subscribers hebt toegevoegd, is het tijd om je eerste melding te versturen.
Een goede manier om te beginnen is door een bericht via de AWS Console te publiceren.
Ga naar de detailpagina van je topic en klik rechtsboven op de knop "Publish message" (zie Afbeelding 4). Hiermee open je het publicatieformulier waarin je je melding kunt opstellen. Je ziet velden voor het onderwerp en de berichttekst. Het onderwerp is optioneel, maar handig voor e-mailmeldingen, omdat het de onderwerpregel van de e-mail wordt.
Voor een eenvoudige test kun je zoiets invullen:

Afbeelding 10 - Inhoud van het eerste bericht
Als je tevreden bent met je bericht, scroll dan naar beneden en klik onderaan het formulier op de knop "Publish message":

Afbeelding 11 - Een bericht publiceren via de console
Na het klikken distribueert SNS je bericht direct naar alle bevestigde subscribers. Als je een e-mailabonnement hebt ingesteld, zou je het testbericht binnen enkele seconden in je inbox moeten ontvangen:

Afbeelding 12 - Bericht ontvangen via e-mail
Simpel, toch? Laten we nu kijken hoe je dit verder kunt aanpassen.
SNS laat je aanpassen hoe je berichten eruitzien voor verschillende typen subscribers.
Bij het publiceren zie je de optie "Message structure". Standaard staat die op "Identical payload for all delivery protocols", wat betekent dat alle subscribers exact hetzelfde bericht ontvangen. Je kunt ook "Custom payload for each delivery protocol" kiezen, zodat je het berichtformaat per subscribertype kunt afstemmen.
Voor e-mailmeldingen heb je twee indelingsopties:

Afbeelding 13 - Payload aanpassen
Voor sms-meldingen geldt een limiet van 160 tekens. SNS levert langere berichten wel, maar ze tellen dan als meerdere berichten. Je kunt ook het sms-berichttype instellen op "Promotional" of "Transactional", wat invloed heeft op de optimalisatie van de levering:

Afbeelding 14 - Sms-opties
Je weet nu hoe je e-mailmeldingen via de AWS Console verstuurt en aanpast. Straks leer je hetzelfde via de CLI en Python.
De console is geweldig voor handmatige tests, maar in de praktijk wil je berichten programmatisch publiceren.
Met de AWS Command Line Interface (CLI) kun je eenvoudig SNS-berichten versturen vanuit je terminal of automatiseringsscripts.
Als je de AWS CLI hebt geïnstalleerd en geconfigureerd, voer dan dit commando uit om een bericht via de CLI te publiceren:
aws sns publish --topic-arn "sns-arn" --subject "CLI Notification" --message "Hello from the AWS CLI!"

Afbeelding 15 - Berichten publiceren via AWS CLI
Binnen een oogwenk zie je een vergelijkbaar bericht in je inbox:

Afbeelding 16 - Berichten publiceren via AWS CLI (2)
Voor geavanceerdere toepassingen bieden de AWS SDK's programmatische toegang tot SNS in veel programmeertalen.
Hier is een eenvoudig voorbeeld om een bericht te publiceren met Python en de boto3-bibliotheek:
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']}")

Afbeelding 17 - Berichten publiceren via de Python SDK
Wederom wordt het bericht direct aan mijn inbox geleverd:

Afbeelding 18 - Berichten publiceren via de Python SDK (2)
Dat is alles wat erbij komt kijken om berichten te publiceren met SNS! Je hebt nu meerdere manieren om meldingen te sturen, van de eenvoudige console-interface tot programmatisch publiceren met de AWS CLI of SDK.
> Nieuw met AWS Boto in Python? Schrijf je in voor onze cursus en word razendsnel vaardig.
In de volgende sectie verkennen we enkele geavanceerde functies van SNS die je meldingen naar een hoger niveau tillen.
Tot nu toe heb je de basis van SNS geleerd. In deze sectie bekijken we een paar geavanceerde functies die SNS echt krachtig maken.
Hetzelfde bericht naar alle subscribers sturen zorgt er vaak voor dat endpoints berichten ontvangen die niet relevant zijn.
Berichtfiltering lost dit op door subscribers toe te staan te filteren welke berichten ze ontvangen op basis van berichtattributen. Zie het als e-mailfilters instellen—je maakt regels die bepalen welke berichten doorkomen. Voor SNS heten deze regels filter policies.
Je kunt filter policies instellen op je subscriptions zodat ze alleen relevante berichten ontvangen:

Afbeelding 19 - Filter policies voor meldingen
In dit voorbeeld ontvangt de subscriber alleen meldingen voor berichten met een attribuut order_value met een numerieke waarde van 1500 of hoger.
Om zo'n melding te versturen, kun je de volgende Python-code gebruiken:
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)
Dit is wat je ziet na het uitvoeren van het Python-script:

Afbeelding 20 - Een melding versturen met Python
Alleen als de waarde van order_value 1500 of hoger is, ontvang je de melding:

Afbeelding 21 - Inhoud van de melding
Kortom, met filter policies kun je gerichte meldingen sturen zonder je publicatiecode te wijzigen. Het beste is dat filtering aan de AWS-kant gebeurt, niet in je applicatie, wat efficiënter is en onnodig verkeer vermindert.
Zelfs bij de meest betrouwbare systemen kan berichtbezorging soms falen.
Een Dead Letter Queue (DLQ) is een speciale Amazon SQS-queue waar SNS berichten naartoe kan sturen die niet aan hun subscribers konden worden geleverd. Dit gebeurt doorgaans wanneer een subscriber niet beschikbaar is of een fout retourneert. In plaats van deze mislukte berichten voorgoed kwijt te raken, leidt SNS ze om naar de DLQ, waar je ze later kunt analyseren of opnieuw kunt proberen te leveren.
Het instellen van een DLQ bestaat uit twee stappen. Maak eerst een SQS-queue aan die als DLQ dient:

Afbeelding 22 - Een SQS-queue aanmaken
Configureer vervolgens je SNS-subscription om deze queue te gebruiken voor niet-leverbare berichten:

Afbeelding 23 - Redrive policy toevoegen aan de SQS-queue
Deze configuratie vereist de juiste permissies, omdat SNS berichten naar de SQS-queue moet kunnen sturen. In de AWS-console kun je dit met een simpel selectievakje instellen, maar als je CloudFormation of andere infrastructure-as-code tools gebruikt, moet je de juiste IAM-permissies toevoegen.
Met een DLQ kun je leveringsfouten monitoren en indien nodig actie ondernemen. Je kunt bijvoorbeeld een alarm instellen dat afgaat wanneer er berichten in je DLQ verschijnen, zodat je wordt gewaarschuwd voor mogelijke problemen bij subscribers—maar dat valt buiten de scope van deze sectie.
Lambda-functies openen een wereld aan mogelijkheden voor het verwerken van SNS-berichten.
Wanneer je een Lambda-functie abonneert op een SNS-topic, wordt de functie automatisch getriggerd telkens wanneer een bericht wordt gepubliceerd. Dankzij de serverloze aanpak van Lambda hoef je geen infrastructuur te beheren voor berichtverwerking; het schaalt automatisch mee met het aantal berichten.
Begin met het aanmaken van een Lambda-functie:

Afbeelding 24 - Een Lambda-functie aanmaken
Vul deze vervolgens met code zoals dit:
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"}

Afbeelding 25 - Code van de Lambda-functie
Als je code klaar is, klik je op de knop "Add trigger" om de Lambda-functie met SNS te verbinden:

Afbeelding 26 - SNS koppelen aan Lambda
De functie is nu gekoppeld aan de queue, wat betekent dat je een testmelding kunt sturen:

Afbeelding 27 - Testmelding
Lambda-functies bieden logmonitoring, wat betekent dat je recente functieaanroepen kunt bekijken—het resultaat van het versturen van een melding:

Afbeelding 28 - Lambda-functielogs
Lambda-functies kunnen vrijwel alles met deze berichten doen: ze opslaan in een database, andere AWS-services triggeren, e-mails versturen of zelfs externe API's aanroepen. Dat maakt SNS en Lambda samen tot een krachtige combinatie voor event-driven architecturen. Je kunt meer over Lambda-functies leren in de tutorial Aan de slag met AWS Lambda.
Straks leer je de basis van SNS-monitoring en -logging.
Het bijhouden van je SNS-activiteit is essentieel om een betrouwbaar notificatiesysteem te onderhouden.
Amazon CloudWatch biedt uitgebreide monitoring voor al je AWS-services, inclusief SNS. Door CloudWatch met SNS in te richten, krijg je zicht op belangrijke operationele metrics zoals berichtleveringspercentages, fouten en API-gebruikspatronen.
Om te beginnen met CloudWatch-monitoring voor SNS, ga je naar de CloudWatch-console in je AWS-account. Daar heb je toegang tot de vooraf geconfigureerde SNS-metrics die AWS automatisch voor je verzamelt.
De meest waardevolle SNS-metrics om te monitoren zijn onder andere:

Afbeelding 29 - Standaard CloudWatch-dashboard voor SNS
Het instellen van CloudWatch-alarms stelt je in staat snel te reageren op potentiële problemen voordat ze je gebruikers raken. Je kunt bijvoorbeeld een alarm maken dat afgaat wanneer mislukte leveringen een bepaalde drempel overschrijden:
Als je liever afbeeldingen volgt: begin met het aanmaken van een alarm voor een interessante metric, zoals NumberOfNotificationsFailed. Stel de drempels in die het alarm activeren:

Afbeelding 30 - Alarm aanmaken
En dat is het—het alarm is nu aangemaakt en actief:

Afbeelding 31 - Alarm aanmaken (2)
Deze alarms kunnen het verschil maken tussen proactief een probleem aanpakken en er pas via ontevreden gebruikers achter komen.
AWS CloudTrail legt alle API-activiteit in je AWS-account vast, inclusief acties binnen de SNS-service.
Elke bewerking op je SNS-topics—of die nu via de console, CLI of SDK gebeurt—genereert een entry in CloudTrail-logs. Deze logs bieden waardevolle informatie voor beveiligingsanalyse, het bijhouden van resourcewijzigingen en compliance-audits.
Zo krijg je toegang tot SNS-logs in CloudTrail:
Als tekstinstructies niet genoeg zijn, bekijk dan de onderstaande afbeeldingen. Begin met het aanmaken van een nieuwe trail:

Afbeelding 32 - Een nieuwe trail aanmaken
Filter vervolgens onder "Event history" de events zodat alleen die voor SNS overblijven:

Afbeelding 33 - Logs filteren
Logs worden automatisch opgeslagen in een S3-bucket, wat betekent dat deze aanpak permanente opslag biedt en geavanceerder queryen mogelijk maakt.
> Hoe werkt opslag op AWS? Lees onze gids over S3 en EFS.
Kortom, door CloudWatch-metrics te combineren met CloudTrail-logs creëer je een uitgebreid monitoringsysteem dat helpt je SNS-infrastructuur betrouwbaar te laten draaien.
Je kent nu de basis- en geavanceerde functies van AWS SNS. Wat rest zijn de best practices voor het aanmaken van topics en het versturen van berichten.
Beveiliging moet een topprioriteit zijn bij het inrichten van je SNS-infrastructuur. Zonder de juiste controles kunnen je topics kwetsbaar zijn voor ongeautoriseerde toegang—een enorm beveiligingsrisico.
AWS Identity and Access Management (IAM) biedt de tools die je nodig hebt om je SNS-topics te beveiligen. Begin met policies die het principe van least privilege volgen—geef alleen de specifieke permissies die nodig zijn voor elke gebruiker of service. Zo wil je sommige applicaties misschien alleen laten publiceren, terwijl andere alleen hoeven te abonneren op topics.
Hier is een voorbeeld van een IAM-policy die publiceren naar een specifiek topic beperkt:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sns:Publish",
"Resource": "sns-arn"
}
]
}
Je kunt ook topic policies gebruiken om te bepalen welke AWS-accounts zich op je topics mogen abonneren. Dit is vooral belangrijk als je data over organisatorische grenzen heen deelt.
Vergeet niet regelmatig permissies te auditen met AWS CloudTrail en toegang te verwijderen die niet langer nodig is.
Hoge berichtvolumes kunnen subscribers overweldigen als je ze niet goed afhandelt. Dit is waar het combineren van SNS met andere AWS-services essentieel wordt.
Een populair patroon is de "fanout"-architectuur, waarbij je berichten publiceert naar een SNS-topic met meerdere SQS-queues als subscribers. Elke queue kan dan verschillende verwerkingssystemen voeden op hun eigen tempo. Dit ontkoppelt je publishers van je consumers en biedt een buffer tijdens piekbelasting.
Voor realtime verwerkingsbehoeften kun je Lambda-functies abonneren op je topics. Lambda schaalt automatisch mee met je berichtvolume, zodat je geen servers hoeft te voorzien of te beheren.
SNS is kosteneffectief, maar de kosten kunnen snel oplopen naarmate je berichtvolume groeit. Met een paar strategische keuzes houd je de kosten in toom.
Wees om te beginnen selectief met je subscription-protocollen. HTTP/HTTPS-endpoints zijn over het algemeen het meest kosteneffectief. E-mailmeldingen zijn handig, maar gebruik ze met beleid omdat ze hogere kosten per bericht met zich meebrengen.
Berichtfiltering is nog een krachtige manier om kosten te besparen. Door filter policies op je subscriptions te implementeren, zorg je dat berichten alleen worden geleverd aan geïnteresseerde subscribers. Als je bijvoorbeeld een topic hebt voor alle systeemberichten, wil je misschien dat je on-call engineers tijdens hun shift alleen kritieke alerts ontvangen, niet elke melding:
# Subscribe with a filter policy
response = sns.subscribe(
TopicArn="sns-arn",
Protocol="email",
Endpoint="oncall@example.com",
Attributes={"FilterPolicy": '{"severity": ["critical"]}'},
)
Controleer tot slot regelmatig je SNS-gebruik in de AWS Cost Explorer en zoek naar mogelijkheden om topics te consolideren of ongebruikte subscriptions te verwijderen. Ongebruikte of dubbele resources verhogen niet alleen onnodig de kosten, maar maken je architectuur ook complexer.
Door deze best practices te volgen, bouw je een SNS-implementatie die veilig, schaalbaar en kosteneffectief is—alles wat je nodig hebt voor een betrouwbare notificatieservice zonder onverwachte kosten of beveiligingszorgen.
Als je realtime meldingen nodig hebt voor gedistribueerde applicaties, zoek dan niet verder dan AWS SNS. Het is eenvoudig te gebruiken, integreert goed met andere AWS-services en schaalt onbeperkt mee met je behoeften.
Het publish-subscribe-model in SNS maakt het eenvoudig om notificatiesystemen te implementeren die meerdere kanalen tegelijk kunnen bereiken. Van topics aanmaken en subscribers beheren tot geavanceerde functies zoals berichtfiltering en dead-letter queues—je hebt nu de kennis om een robuuste notificatie-infrastructuur te bouwen.
Je hebt ook geleerd over de cruciale aspecten van monitoring, beveiliging en kostenbeheer die ervoor zorgen dat je SNS-implementatie betrouwbaar en efficiënt blijft in productieomgevingen.
Naarmate applicaties meer event-driven architecturen omarmen, worden services zoals SNS steeds waardevoller. Of je nu een eenvoudig alert-systeem bouwt of complexe microservices, de patronen in deze tutorial vormen een basis voor effectieve communicatie tussen je systeemcomponenten.
Wil je meer leren over AWS? Volg deze cursussen van DataCamp:
Je kunt met DataCamp zelfs voorbereiden op AWS-certificeringen—AWS Cloud Practitioner (CLF-C02).
AWS SNS (Simple Notification Service) is een volledig beheerde messagingservice waarmee je meldingen van publishers naar meerdere subscribers kunt sturen. In tegenstelling tot SQS (Simple Queue Service), dat een queue-gebaseerd model volgt waarbij elk bericht door één consumer wordt verwerkt, gebruikt SNS een publish-subscribe-model dat één bericht tegelijkertijd naar veel ontvangers uitzendt. Dit fundamentele verschil maakt SNS ideaal voor eventmeldingen en SQS geschikter voor taakverwerking.
AWS SNS ondersteunt een breed scala aan subscriber-endpoints, waaronder e-mailadressen, sms-telefoonnummers, SQS-queues, Lambda-functies, HTTP/HTTPS-endpoints en mobiele pushmeldingen. Deze variatie geeft je flexibiliteit in hoe je meldingen worden geleverd en verwerkt, zodat je met hetzelfde gepubliceerde bericht zowel menselijke ontvangers (via e-mail of sms) als andere systemen (via Lambda, SQS of HTTP-endpoints) kunt bereiken.
Het beveiligen van SNS-topics houdt in dat je de juiste toegangscontroles implementeert via IAM-policies die het principe van least privilege volgen. Je kunt beperken wie naar topics mag publiceren en subscriptions mag beheren, en topic policies gebruiken om te bepalen welke AWS-accounts zich mogen abonneren. Voor gevoelige data ondersteunt AWS SNS server-side encryptie om berichtinhoud tijdens de overdracht te beschermen. Regelmatige beveiligingsaudits met CloudTrail-logs helpen ongeautoriseerde toegangs pogingen of potentiële kwetsbaarheden in je SNS-implementatie op te sporen.
Berichtfiltering in SNS zorgt ervoor dat subscribers alleen de meldingen ontvangen die voor hen belangrijk zijn. Dit gebeurt via filter policies die subscribers definiëren op basis van berichtattributen. Wanneer je berichten publiceert met specifieke attributen (zoals orderwaarde, regio of prioriteit), vergelijkt SNS deze attributen met de filter policy van elke subscriber en levert het bericht alleen als er een match is. De filtering gebeurt aan de AWS-kant en niet in je applicatie, wat de efficiëntie verbetert en onnodig berichtverkeer vermindert.
Dead-letter queues fungeren als vangnet voor mislukte berichtleveringen in SNS. Wanneer een bericht niet aan een subscriber kan worden geleverd (meestal omdat de subscriber niet beschikbaar is of een fout retourneert), kan SNS het doorsturen naar een aangewezen SQS-queue in plaats van het volledig te verliezen. Dit DLQ-systeem stelt je in staat mislukte leveringen vast te leggen, te analyseren en eventueel opnieuw te proberen. Het is vooral waardevol voor bedrijfskritische meldingen waarbij berichtverlies grote impact kan hebben, omdat het inzicht geeft in leveringsproblemen die anders onopgemerkt zouden blijven.
Leer meer over AWS met deze cursussen!
Cursus
Cursus
Cursus

blog
Adel Nehme
15 min