AWS SNS: De Complete Gids voor Real-Time Meldingen

Het beheren van real-time meldingen over uw applicaties kan een grote uitdaging zijn – tenminste zonder de juiste berichtenservice.

Amazon Simple Notification Service (SNS) biedt een volledig beheerde berichtenoplossing voor het ontkoppelen en schalen van microservices, gedistribueerde systemen en serverloze applicaties. SNS stelt u in staat om berichten naar een groot aantal abonnees te sturen via meerdere transportprotocollen, zoals HTTP/S, e-mail, sms en mobiele pushmeldingen. AWS SNS verzorgt al het zware werk van berichtaflevering, inclusief betrouwbare bezorging, herhalingen en terugvalfunctionaliteit, zodat u zich kunt richten op het bouwen van de kernfuncties van uw applicatie.

AWS SNS volgt een publish-subscribe model dat zowel gemakkelijk te schalen als te begrijpen is. Een enkele gepubliceerde boodschap kan gelijktijdig naar meerdere eindpunten worden verspreid, wat SNS ideaal maakt voor op evenementen gestuurde architecturen.

In deze tutorial neem ik je mee in het opzetten en gebruiken van AWS SNS om meldingen te verzenden via verschillende kanalen.

Wat is AWS SNS?

Amazon Simple Notification Service (SNS) is de beheerde pub/sub messagingdienst van AWS die je in staat stelt om microservices, gedistribueerde systemen en serverless applicaties te ontkoppelen.

SNS werkt volgens een eenvoudig publiceer-abonneemodel waarbij uitgevers berichten naar onderwerpen sturen en abonnees deze berichten ontvangen. Denk aan een SNS-onderwerp als een communicatiekanaal – je publiceert berichten naar dit kanaal en iedereen die geabonneerd is, wordt onmiddellijk op de hoogte gebracht. Het mooie van dit systeem is dat uitgevers niet hoeven te weten wie hun berichten ontvangt, en abonnees niet hoeven te weten wie hen berichten stuurt.

Je vraagt je misschien af hoe dit verschilt van andere AWS-messagingdiensten zoals Simple Queue Service (SQS). Simpel gezegd gebruikt SQS een op wachtrijen gebaseerd model dat voornamelijk is ontworpen voor het verwerken van taken asynchroon, terwijl SNS zich richt op het uitzenden van berichten naar meerdere ontvangers tegelijk. Dit maakt SNS perfect voor scenario’s waarin je veel systemen op de hoogte moet stellen van een zojuist gebeurde gebeurtenis. Je kunt meer leren over de verschillen in de SQS vs SNS-blogpost.

SNS ondersteunt meerdere bezorgingsprotocollen, waardoor je flexibiliteit hebt in hoe je abonnees meldingen ontvangen.

Belangrijkste kenmerken van AWS SNS

SNS zit boordevol functies die het de enige meldingsdienst maken die je nodig hebt. Ik zal er een paar opnoemen:

  • Uitwaaierende architectuur: SNS kan berichten tegelijkertijd naar duizenden endpoints afleveren, waardoor je met één API-oproep updates kunt uitzenden over je volledige applicatie-ecosysteem.
  • Meerdere transportsprotocollen: Je bent niet beperkt tot slechts één manier om berichten te verzenden. SNS ondersteunt HTTP/HTTPS-eindpunten, e-mail, SMS, mobiele pushmeldingen en zelfs SQS-wachtrijen als abonnementseindpunten.
  • Berichtfiltering: Niet elke abonnee heeft elk bericht nodig. Met berichtfiltering kunnen abonnees filterbeleid instellen om alleen de berichten te ontvangen waar ze om geven, wat ruis en verwerkingskosten vermindert.
  • Berichtarchivering: Als je een record moet bijhouden van alle verzonden meldingen, dan ben je blij te weten dat SNS integreert met Amazon S3 voor berichtarchivering en met Amazon Redshift voor analyses.
  • Bezorgstatus bijhouden: U kunt de bezorgstatus van uw meldingen controleren om ervoor te zorgen dat ze hun bestemming bereiken. Dit is vooral handig voor SMS- en mobiele pushmeldingen waarbij bezorging niet is gegarandeerd.
  • Encryptie: Uw gevoelige gegevens blijven beschermd dankzij de ondersteuning van SNS voor server-side encryptie, waardoor uw berichten vertrouwelijk blijven tijdens de verzending.

Maar het beste deel van SNS moet wel de schaalbaarheid zijn. SNS schaalt automatisch mee met de behoeften van jouw applicatie. Het maakt niet uit of je tien of tien miljoen meldingen per dag verstuurt, de service past zich automatisch aan zonder dat er handmatig ingegrepen hoeft te worden.

Hierna laat ik je zien hoe je SNS kunt opzetten.

Opzetten van AWS SNS

Voordat je je eerste melding met SNS kunt versturen, moet je een paar stappen volgen om alles gereed te maken.

Stap 1: Een AWS-account aanmaken

Als je nog geen AWS-account hebt, moet je er een aanmaken voordat je SNS kunt gaan gebruiken.

Ga naar de AWS-homepage en klik op de knop “Maak een AWS-account” in de rechterbovenhoek. Je moet je e-mailadres opgeven, een wachtwoord aanmaken en enkele basisaccountgegevens invoeren. AWS zal ook om je creditcardgegevens vragen – maak je geen zorgen, SNS heeft een vrij royale gratis laag en je wordt alleen in rekening gebracht als je die limieten overschrijdt.

Wanneer uw account is ingesteld, bent u klaar om verder te gaan. Ik raad echter sterk aan om een gewijd IAM-gebruiker aan te maken in plaats van uw root-account te gebruiken. Dat valt buiten de reikwijdte van dit artikel, maar verwijs naar de officiële instructies voor gedetailleerde richtlijnen.

Stap 2: SNS instellen in de AWS-beheerconsole

Nu u een AWS-account heeft, is het tijd om toegang te krijgen tot de SNS-service.

Log in op de AWS Management Console met je inloggegevens en zoek naar SNS. Je kunt dit op drie manieren doen:

  • Typ “SNS” in de zoekbalk bovenaan de console
  • Klik op “Services” in de bovenste navigatiebalk en zoek SNS onder de categorie “Application Integration”
  • Ga rechtstreeks naar deSNS-console

Ongeacht de manier, dit is het scherm dat je zou moeten zien:

Afbeelding 1 – AWS SNS-dienstenpagina

Zodra je in het SNS-dashboard bent, zie je een menu aan de linkerkant met opties zoals “Onderwerpen,” “Abonnementen,” en “Mobiel.” Het dashboard geeft je een overzicht van je SNS-bronnen en recente activiteit.

Dit zal behoorlijk leeg zijn voor een nieuw account – dat is te verwachten. Laten we nu ons eerste SNS-onderwerp maken.

Stap 3: Het maken van een SNS-onderwerp

Een SNS-onderwerp is in feite een communicatiekanaal waar uitgevers berichten naartoe sturen en abonnees luisteren.

Zie het als een radiostation – het station zendt uit op een specifieke frequentie (het onderwerp) en iedereen afgestemd op die frequentie ontvangt de uitzending. In SNS-termen publiceert jouw applicatie berichten naar een onderwerp en ontvangen alle eindpunten die zich hebben geabonneerd op dat onderwerp die berichten.

Hier is hoe je je eerste SNS-onderwerp kunt maken:

  1. Voer een onderwerpsnaam in op het scherm dat je hebt gezien in Afbeelding 1.
  2. Klik op de knop “Volgende stap”.
  3. Selecteer “Standaard” als type (FIFO-onderwerpen hebben verschillende gebruiksscenario’s die we later zullen behandelen).
  4. (Optioneel) Voer een weergavenaam in. Deze wordt opgenomen in berichten die worden verzonden naar SMS- of e-mailabonnees.
  5. Laat alle andere instellingen voorlopig op hun standaardwaarden staan.
  6. Klik op “Onderwerp aanmaken”.

Als je de voorkeur geeft aan afbeeldingen boven tekst, zou je scherm er als volgt uit moeten zien:

Afbeelding 2 – Aanmaak van SNS-onderwerp

Zodra je tevreden bent met de waarden, scroll naar beneden totdat je de knop “Onderwerp aanmaken” ziet:

Afbeelding 3 – Aanmaak van SNS-onderwerp (2)

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

Afbeelding 4 – Gegevens van het gemaakte onderwerp

Je nieuwe onderwerp is klaar voor abonnementen, maar het heeft er nog geen, wat betekent dat berichten die je publiceert nergens naartoe gaan. Maak je geen zorgen, dat los je op in de volgende sectie wanneer je abonnees toevoegt.

SNS-abonnees en abonnementen

Zoals ik eerder zei, is je SNS-thema als een radiostation. Het heeft momenteel geen luisteraars, maar dat zal veranderen wanneer je abonnees toevoegt om je berichten te ontvangen.

Wat is een SNS-abonnee?

Een abonnee is elk eindpunt dat meldingen ontvangt van je SNS-thema wanneer een bericht wordt gepubliceerd.

Denk aan de analogie van een nieuwsbrief. Elke keer dat je een nieuwe editie (bericht) publiceert, wordt deze naar iedereen op je mailinglijst gestuurd. SNS maakt dit proces automatisch en schaalbaar, en het regelt alle bezorglogistiek voor jou.

AWS ondersteunt een breed scala aan abonneetypes, waardoor je flexibiliteit hebt in hoe je berichten worden verwerkt. Ik zal de belangrijkste typen hieronder opsommen:

  • E-mailadressen: Stuur gewone tekstmeldingen rechtstreeks naar e-mailinboxen.
  • SMS-nummers: Lever tekstberichtmeldingen aan mobiele telefoons.
  • SQS-wachtrijen: Routeer berichten naar andere AWS-services voor verdere verwerking.
  • Lambda-functies: Activeer serverloze code-uitvoering als reactie op meldingen.
  • HTTP/HTTPS-eindpunten: Verstuur berichten naar webapplicaties of API’s.
  • Mobiele push: Lever meldingen rechtstreeks aan mobiele apps.

Elk type abonnee heeft zijn eigen voordelen en toepassingen. Bijvoorbeeld, e-mail en SMS zijn geweldig voor menselijke ontvangers, terwijl SQS-wachtrijen en Lambda-functies beter zijn voor systeem-naar-systeem communicatie.

Stap 1: Een abonnee toevoegen

Nu je begrijpt wat abonnees zijn, laten we er een toevoegen aan je onderwerp. Voor deze tutorial zal ik e-mail gebruiken omdat het het eenvoudigst is om in te stellen.

Zo voeg je een e-mailabonnee toe aan je SNS-onderwerp:

  1. Ga naar de detailpagina van je onderwerp (de pagina die wordt weergegeven in Afbeelding 4), klik op de knop “Abonnement aanmaken”.
  2. Kies in de dropdown “Protocol” voor “E-mail”.
  3. Voer in het veld “Eindpunt” het e-mailadres in dat meldingen moet ontvangen.
  4. Laat alle andere instellingen op hun standaardwaarden staan.
  5. Klik op “Abonnement aanmaken”.

Je scherm zou er ongeveer zo uit moeten zien:

Afbeelding 5 – Het maken van een e-mailabonnement

Zodra je op “Abonnement maken” klikt, zal AWS het abonnement aan je onderwerp toevoegen, maar het zal in een “wacht op bevestiging” -status staan:

Afbeelding 6 – Wacht op bevestiging status

Dit is een belangrijke beveiligingsfunctie, aangezien AWS ervoor wil zorgen dat de eigenaar van het e-mailadres daadwerkelijk deze meldingen wil ontvangen.

Stap 2: Abonnementen bevestigen

Na het toevoegen van een abonnee, moeten ze bevestigen dat ze meldingen willen ontvangen van je SNS-onderwerp.

Voor e-mailabonnementen stuurt AWS automatisch een bevestigingse-mail naar het opgegeven adres. De e-mail bevat een link waarop de ontvanger moet klikken om het abonnement te activeren. Totdat dit gebeurt, zullen er geen berichten die zijn gepubliceerd naar het onderwerp worden afgeleverd op dit eindpunt.

Dit is hoe een typische bevestigingse-mail eruitziet:

Afbeelding 7 – SNS bevestigingse-mail

De ontvanger hoeft alleen maar te klikken op de link “Abonnement bevestigen” in de e-mail. Ze worden vervolgens naar een pagina geleid die bevestigt dat hun abonnement nu actief is:

Afbeelding 8 – Bericht abonnementsbevestiging

Het proces is vergelijkbaar voor SMS-abonnees – AWS verstuurt een sms met een bevestigingslink die de ontvanger moet volgen. HTTP/HTTPS-eindpunten moeten reageren op een bevestigingsverzoek van AWS, terwijl AWS-resources zoals Lambda-functies en SQS-queues kunnen worden geconfigureerd voor automatische bevestiging.

Je kunt de status van je abonnementen controleren door op de sectie “Abonnementen” in de linkerzijbalk van de SNS-console te klikken. Bevestigde abonnementen tonen een status van “Bevestigd”, terwijl diegenen die wachten op bevestiging “In afwachting van bevestiging” zullen tonen.

Afbeelding 9 – Abonnementsstatus

Zodra je abonnement is bevestigd, ben je klaar om berichten te verzenden! Elk bericht dat naar het onderwerp wordt gepubliceerd, wordt geleverd aan alle bevestigde abonnees met behulp van hun opgegeven protocol.

Dit is alles wat er is om SNS-abonnementen in te stellen. In de volgende sectie leer je hoe je berichten naar je onderwerp kunt publiceren en kunt testen of je abonnees ze correct ontvangen.

Berichten publiceren naar SNS-onderwerpen

Nu je je SNS-onderwerp hebt ingesteld en abonnees hebt toegevoegd, is het tijd om je eerste melding te versturen.

Stap 1: Een bericht publiceren

Een goede manier om te beginnen is door een bericht te publiceren via de AWS-console.

Om je eerste bericht te versturen, ga naar de detailpagina van je onderwerp en klik op de knop “Bericht publiceren” rechtsboven (zie Afbeelding 4). Hiermee open je het formulier voor het publiceren van het bericht waar je je notificatie kunt opstellen. Je ziet velden voor het onderwerp en de inhoud van het bericht. Het onderwerp is optioneel maar handig voor e-mailnotificaties omdat het de onderwerpregel van de e-mail wordt.

Voor een eenvoudig testbericht kun je iets als dit invoeren:

Afbeelding 10 – Inhoud van het eerste bericht

Als je tevreden bent met je bericht, scroll dan naar beneden en klik op de knop “Bericht publiceren” onderaan het formulier:

Afbeelding 11 – Een bericht publiceren via de console

Na het klikken, verspreidt SNS onmiddellijk uw bericht naar alle bevestigde abonnees. Als u een e-mailabonnement heeft ingesteld, zou u het testbericht binnen enkele seconden in uw inbox moeten ontvangen:

Afbeelding 12 – Bericht ontvangen in e-mail

Simpel, toch? Laten we nu zien hoe we het verder kunnen aanpassen.

Stap 2: Verzenden van SMS- en e-mailmeldingen

SNS biedt u de mogelijkheid om aan te passen hoe uw berichten verschijnen voor verschillende soorten abonnees.

Bij het publiceren van een bericht, zal je de optie “Berichtstructuur” opmerken. Standaard is deze ingesteld op “Identieke payload voor alle bezorgprotocollen,” wat betekent dat alle abonnees exact hetzelfde bericht ontvangen. Je kunt echter ook “Aangepaste payload voor elk bezorgprotocol” selecteren, waarmee je het berichtformaat voor elk type abonnee kunt aanpassen.

Voor e-mailmeldingen heb je twee opmaakopties:

  • E-mail-JSON: Stuur de ruwe JSON-payload naar het e-mail eindpunt.
  • E-mail: Stuur een geformatteerde e-mail met het onderwerp en de berichtinhoud.

Afbeelding 13 – Aanpassing van de payload

Voor sms-meldingen, houd er rekening mee dat er een limiet is van 160 tekens. SNS zal langere berichten afleveren, maar ze worden behandeld als meerdere berichten. U kunt ook het sms-berichttype instellen op “Promotioneel” of “Transactieel,” wat van invloed is op de bezorgoptimalisatie:

Afbeelding 14 – Sms-opties

U weet nu hoe u e-mailmeldingen kunt verzenden en aanpassen via AWS Console. Hierna leert u hoe u hetzelfde kunt doen via de CLI en Python.

Stap 3: Gebruikmaken van de AWS CLI of SDK om berichten te publiceren

De console is geweldig voor handmatig testen, maar in de echte wereld wil je berichten programmatisch publiceren.

De AWS Command Line Interface (CLI) maakt het eenvoudig om SNS-berichten vanuit je terminal of automatiseringsscripts te verzenden.

Aangenomen dat je de AWS CLI hebt geïnstalleerd en geconfigureerd, voer dan deze opdracht 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 – Berichtpublicatie via AWS CLI

In een oogwenk zie je een vergelijkbaar bericht in je inbox:

Afbeelding 16 – Bericht publiceren via AWS CLI (2)

Voor meer geavanceerde toepassingen bieden de AWS SDK’s programatische toegang tot SNS in veel programmeertalen.

Hier is een eenvoudig voorbeeld voor het publiceren van een bericht met behulp van Python en de boto3-bibliotheek:

import boto3 # Initialiseer de SNS-client sns_client = boto3.client("sns", region_name="eu-central-1") # Onderwerp ARN (Amazon Resource Name) topic_arn = "sns-arn" # Publiceer een eenvoudig bericht response = sns_client.publish( TopicArn=topic_arn, Message="Hello from Python!", Subject="Python Notification" ) # Controleer of het bericht succesvol is verzonden if "MessageId" in response: print(f"Message published successfully! Message ID: {response['MessageId']}")

Afbeelding 17 – Bericht publiceren via Python SDK

Nogmaals, het bericht wordt direct afgeleverd in mijn inbox:

Afbeelding 18 – Bericht publiceren via Python SDK (2)

Dat is alles wat er is om berichten te publiceren met SNS! Je hebt nu meerdere manieren om meldingen te versturen, van de eenvoudige console-interface tot programmatische publicatie met de AWS CLI of SDK.

> Nieuw bij AWS Boto in Python? Schrijf je in voor onze cursus om snel vaardig te worden.

In de volgende sectie zullen we enkele geavanceerde functies van SNS verkennen die je meldingen naar een hoger niveau zullen tillen.

Geavanceerde SNS-functies

Tot nu toe heb je de basisbeginselen van SNS geleerd. In dit gedeelte zul je een paar geavanceerde functies zien die SNS echt krachtig maken.

SNS-berichtfiltering

Het sturen van dezelfde notificatie naar alle abonnees resulteert vaak in endpoints die berichten ontvangen waar ze niet om geven.

Berichtfiltering lost dit probleem op door abonnees in staat te stellen te filteren welke berichten ze ontvangen op basis van berichtattributen. Denk eraan als het instellen van e-mailfilters – je maakt regels die bepalen welke berichten doorgelaten worden. Voor SNS worden deze regels filterbeleid genoemd.

Om te beginnen kun je filterbeleid instellen op je abonnementen zodat ze alleen relevante berichten ontvangen:

Afbeelding 19 – Notificatiefilterbeleid

In dit voorbeeld ontvangt de abonnee alleen meldingen voor berichten met een attribuut order_value met een numerieke waarde van 1500 en hoger.

Om zo’n melding te versturen, kun je de volgende Python-code gebruiken:

import boto3 # Initialiseer de SNS-client sns_client = boto3.client("sns", region_name="eu-central-1") # Onderwerp 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 via Python

Alleen als de waarde van order_value 1500 of hoger is, ontvang je de melding:

Afbeelding 21 – Inhoud van de melding

Kortom, filterpolicies stellen je in staat om gerichte meldingen te versturen zonder je publicatiecode te veranderen. Het beste is dat de filtering aan de kant van AWS plaatsvindt, niet in je applicatie, wat de efficiëntie verbetert en onnodig verkeer vermindert.

SNS dead letter queues (DLQ)

Berichtlevering kan soms falen, zelfs met de meest betrouwbare systemen.

Een Dead Letter Queue (DLQ) is een speciale Amazon SQS-wachtrij waar SNS berichten naartoe kan sturen die niet konden worden afgeleverd bij hun abonnees. Dit gebeurt meestal wanneer een abonnee niet beschikbaar is of een foutmelding retourneert. In plaats van deze mislukte berichten voor altijd te verliezen, worden ze door SNS doorgestuurd naar de DLQ, waar je ze later kunt analyseren of opnieuw kunt proberen af te leveren.

Het opzetten van een DLQ omvat twee stappen. Eerst maak je een SQS-wachtrij aan om te dienen als je DLQ:

Afbeelding 22 – Het maken van een SQS-wachtrij

Vervolgens configureer je je SNS-abonnement om deze wachtrij te gebruiken voor onafleverbare berichten:

Afbeelding 23 – Het toevoegen van een redrive-beleid aan de SQS-wachtrij

Deze configuratie vereist de juiste rechten, aangezien SNS berichten naar de SQS-wachtrij moet kunnen sturen. In de AWS-console kun je dit instellen met een eenvoudig selectievakje, maar als je CloudFormation of andere infrastructuur-als-code tools gebruikt, moet je de juiste IAM-rechten toevoegen.

Met een DLQ op zijn plaats kun je controleren op bezorgingsfouten en actie ondernemen wanneer dat nodig is. Bijvoorbeeld, je kunt een alarm instellen dat afgaat wanneer berichten beginnen te verschijnen in je DLQ, om je te waarschuwen voor mogelijke problemen met je abonnees, maar dat valt buiten het bereik van deze sectie.

Het gebruik van AWS Lambda met SNS

Lambda-functies openen een wereld van mogelijkheden voor het verwerken van SNS-berichten.

Wanneer u een Lambda-functie abonneert op een SNS-onderwerp, wordt de functie automatisch geactiveerd telkens wanneer er een bericht wordt gepubliceerd. De serverloze aanpak van Lambda betekent dat u geen infrastructuur hoeft te beheren voor berichtverwerking, aangezien deze automatisch schaalt op basis van het volume van berichten.

Om te beginnen, maak eerst een Lambda-functie aan:

Afbeelding 24 – Het maken van een Lambda-functie

Vul het vervolgens in met code die hierop lijkt:

def lambda_handler(event, context): # SNS-berichten komen in de 'Records' array for record in event["Records"]: # Haal het bericht op message = record["Sns"]["Message"] subject = record["Sns"]["Subject"] timestamp = record["Sns"]["Timestamp"] # Verwerk het bericht print(f"Received message: {message}") print(f"Subject: {subject}") print(f"Timestamp: {timestamp}") # Jouw bedrijfslogica hier # Bijvoorbeeld, sla het bericht op in een database # of activeer een andere AWS-dienst print("ALL DONE!") # Geef succes terug return {"statusCode": 200, "body": "Message processed successfully"}

Afbeelding 25 – Lambda functiecode

Wanneer je code klaar is, klik op de knop “Trigger toevoegen” om de Lambda-functie met SNS te verbinden:

Afbeelding 26 – SNS verbinden met Lambda

De functie is nu verbonden met de wachtrij, wat betekent dat je een testmelding kunt verzenden:

Afbeelding 27 – Testmelding

Met Lambda-functies kunt u logs controleren, wat betekent dat u recente functieaanroepen kunt zien – het resultaat van het verzenden van een melding:

Afbeelding 28 – Logboeken van Lambda-functies

Lambda-functies kunnen vrijwel alles doen met deze berichten – ze opslaan in een database, andere AWS-services activeren, e-mails verzenden of zelfs externe API’s aanroepen. Dit maakt SNS en Lambda een krachtige combinatie voor het bouwen van op gebeurtenissen gebaseerde architecturen. U kunt meer leren over Lambda-functies in de zelfstudie Aan de slag met AWS Lambda

Vervolgens leert u de basisprincipes van SNS-monitoring en -logboeken.

Monitoring en logboeken van SNS-activiteit

Het bijhouden van je SNS-activiteit is essentieel voor het onderhouden van een betrouwbaar notificatiesysteem.

Gebruik maken van Amazon CloudWatch met SNS

Amazon CloudWatch biedt uitgebreide monitoring voor al je AWS-diensten, inclusief SNS. Wanneer je CloudWatch met SNS instelt, krijg je inzicht in belangrijke operationele statistieken zoals berichtafleveringspercentages, fouten en API-gebruikspatronen.

Om te beginnen met CloudWatch-monitoring voor SNS, ga je naar de CloudWatch-console in je AWS-account. Vanaf daar kun je toegang krijgen tot de vooraf geconfigureerde SNS-statistieken die AWS automatisch voor je verzamelt.

De meest waardevolle SNS-statistieken om te monitoren zijn:

  • AantalGepubliceerdeBerichten: Houdt bij hoeveel berichten er naar je onderwerpen zijn gepubliceerd.
  • AantalAfgeleverdeMeldingen: Toont succesvolle berichtafleveringen aan abonnees.
  • AantalMeldingenMislukt: Benadrukt mislukte afleverpogingen, wat op configuratieproblemen kan wijzen.
  • PubliceerGrootte: Meet de grootte van gepubliceerde berichten, zodat u binnen de servicelimieten blijft.

Afbeelding 29 – Standaard CloudWatch-dashboard voor SNS

Het opzetten van CloudWatch-alarms stelt u in staat om snel te reageren op mogelijke problemen voordat ze uw gebruikers beïnvloeden. U kunt bijvoorbeeld een alarm maken dat afgaat wanneer het aantal mislukte berichtleveringen een bepaalde drempel overschrijdt:

  1. Navigeer in de CloudWatch-console naar de sectie “Alarmen”.
  2. Klik op “Alarm maken” en selecteer de SNS-metriek die u wilt controleren.
  3. Definieer uw drempelwaarde (bijv. meer dan 5 mislukte bezorgingen in 5 minuten).
  4. Configureer meldingsacties, zoals het verzenden van een waarschuwing naar een operationsteam.

Als u liever afbeeldingen gebruikt in plaats van instructies, begin dan met het maken van een alarm voor een metriek van interesse, zoals AantalMislukteMeldingen. Stel drempelwaarden in die het alarm activeren:

Afbeelding 30 – Alarm maken

En dat is het – het alarm is nu aangemaakt en actief:

Afbeelding 31 – Alarmcreatie (2)

Deze alarmen kunnen het verschil maken tussen proactief een probleem aanpakken en erover horen van ontevreden gebruikers.

Het controleren van SNS-logboeken

AWS CloudTrail legt alle API-activiteiten in uw AWS-account vast, inclusief acties die binnen de SNS-service zijn uitgevoerd.

Elke operatie die op uw SNS-onderwerpen wordt uitgevoerd—of dit nu via de console, CLI of SDK is—genereert een vermelding in de CloudTrail-logboeken. Deze logboeken bieden waardevolle informatie voor beveiligingsanalyse, het volgen van wijzigingen in bronnen en compliance-audits.

Om toegang te krijgen tot SNS-logboeken in CloudTrail:

  1. Open de CloudTrail-console in uw AWS-account (u moet waarschijnlijk een nieuwe trail aanmaken).
  2. Navigeer naar “Gebeurtenishistorie” om recente SNS-activiteit te bekijken.
  3. Filter de gebeurtenissen door “Gebeurtenisbron” te selecteren en “sns.amazonaws.com” in te typen.

Als tekstinstructies niet voldoende zijn, raadpleeg dan de onderstaande afbeeldingen. Begin met het maken van een nieuwe trail:

Afbeelding 32 – Een nieuwe trail maken

Filter vervolgens onder “Gebeurtenishistorie” de gebeurtenissen om alleen die voor SNS op te nemen:

Afbeelding 33 – Logboeken filteren

Logboeken worden automatisch opgeslagen in een S3-bucket, wat betekent dat deze aanpak permanente opslag voor uw logboeken biedt en meer geavanceerde doorzoekmogelijkheden mogelijk maakt.

> Hoe werkt opslag op AWS? Lees onze gids over S3 en EFS.

Tot slot, door CloudWatch-metrieken te combineren met CloudTrail-logboeken, creëert u een uitgebreid monitoringssysteem dat helpt ervoor te zorgen dat uw SNS-infrastructuur betrouwbaar functioneert.

Beste praktijken voor het gebruik van AWS SNS

U kent nu de basis- en geavanceerde functies van AWS SNS. Wat nog te bespreken resten zijn de beste praktijken voor het maken van onderwerpen en het verzenden van berichten.

Het beveiligen van SNS-onderwerpen

Beveiliging moet een topprioriteit zijn bij het opzetten van uw SNS-infrastructuur. Zonder de juiste controles zouden uw onderwerpen kwetsbaar kunnen zijn voor ongeautoriseerde toegang, wat een groot beveiligingsrisico vormt.

AWS Identity and Access Management (IAM) biedt de tools die u nodig heeft om uw SNS-onderwerpen te beveiligen. Begin met het maken van beleidsregels die het principe van minste rechten volgen – verleen alleen de specifieke machtigingen die nodig zijn voor elke gebruiker of service. U wilt bijvoorbeeld dat sommige toepassingen alleen berichten kunnen publiceren, terwijl anderen alleen hoeven te abonneren op onderwerpen.

Hier is een voorbeeld van een IAM-beleid dat publiceren naar een specifiek onderwerp beperkt:

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

U kunt ook onderwerpsbeleidsregels gebruiken om te bepalen welke AWS-accounts zich kunnen abonneren op uw onderwerpen. Dit is met name belangrijk als u gegevens deelt over organisatorische grenzen heen.

Vergeet niet om regelmatig machtigingen te controleren met behulp van AWS CloudTrail en toegang te verwijderen die niet langer nodig is.

Het beheren van berichtenvolumes

Hoge berichtenvolumes kunnen abonnees overweldigen als ze niet goed worden afgehandeld. Hier komt het combineren van SNS met andere AWS-services essentieel van pas.

Een populair patroon is de “fanout”-architectuur, waarbij je berichten publiceert naar een SNS-onderwerp met meerdere SQS-wachtrijen die erop zijn geabonneerd. Elke wachtrij kan vervolgens in een eigen tempo worden doorgegeven aan verschillende verwerkingssystemen. Dit ontkoppelt je uitgevers van je consumenten en biedt een buffer tijdens piekverkeer.

Voor realtime verwerkingsbehoeften kun je overwegen om Lambda-functies te abonneren op je onderwerpen. Lambda schaalt automatisch mee met je berichtenvolume, waardoor de noodzaak om servers te voorzien en te beheren wordt geëlimineerd.

Kosten verlagen

Hoewel SNS kosteneffectief is, kunnen de uitgaven snel oplopen naarmate je berichtvolume toeneemt. Een paar strategische keuzes kunnen helpen om je kosten onder controle te houden.

Wees eerst selectief met je abonnementsprotocollen. HTTP/HTTPS-eindpunten zijn over het algemeen de meest kosteneffectieve optie. E-mailmeldingen, hoewel handig, moeten zorgvuldig worden gebruikt, aangezien ze hogere kosten per bericht met zich meebrengen.

Berichtfiltering is een andere krachtige kostenbesparende tool. Door filterbeleid toe te passen op je abonnementen, zorg je ervoor dat de berichten alleen worden afgeleverd aan geïnteresseerde abonnees. Als je bijvoorbeeld een onderwerp hebt voor alle systeemwaarschuwingen, wil je misschien dat je beschikbaarheidsingenieurs alleen kritieke waarschuwingen tijdens hun dienst ontvangen, en niet elke melding:

# Abonneer met een filterbeleid response = sns.subscribe( TopicArn="sns-arn", Protocol="email", Endpoint="[email protected]", Attributes={"FilterPolicy": '{"severity": ["critical"]}'}, )

Tenslotte is het belangrijk om regelmatig uw SNS-gebruik te controleren in de AWS Cost Explorer en kansen te zoeken om onderwerpen samen te voegen of ongebruikte abonnementen te verwijderen. Ongebruikte of dubbele resources voegen niet alleen onnodige kosten toe, maar compliceren ook uw architectuur.

Door deze beste werkwijzen te volgen, zult u een SNS-implementatie creëren die veilig, schaalbaar en kostenefficiënt is – alles wat u nodig heeft voor een betrouwbare meldingsdienst zonder onverwachte kosten of beveiligingszorgen.

Samenvatting AWS SNS

Als u real-time meldingen nodig heeft voor gedistribueerde toepassingen, hoeft u niet verder te kijken dan AWS SNS. Het is eenvoudig te gebruiken, integreert goed met andere AWS-services en schaalt oneindig om aan uw behoeften te voldoen.

Het publiceer-abonneer-model in SNS maakt het eenvoudig om notificatiesystemen te implementeren die meerdere kanalen tegelijkertijd kunnen bereiken. Van het creëren van onderwerpen en het beheren van abonnees tot het implementeren van geavanceerde functies zoals berichtfiltering en dead letter queues, je hebt nu de kennis om robuuste notificatie-infrastructuur te bouwen.

Je hebt ook geleerd over de kritische aspecten van monitoring, beveiliging en kostenbeheer die ervoor zorgen dat je SNS-implementatie betrouwbaar en efficiënt blijft in productieomgevingen.

Terwijl applicaties steeds vaker event-driven architecturen aannemen, worden services zoals SNS steeds waardevoller. Of je nu een eenvoudig alarmsysteem of complexe microservices bouwt, de patronen in deze tutorial bieden een basis voor effectieve communicatie tussen de componenten van je systeem.

Om meer te leren over AWS, volg deze cursussen van DataCamp:

Je kunt zelfs DataCamp gebruiken om je voor te bereiden op AWS-certificeringsexamens – AWS Cloud Practitioner (CLF-C02).

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