Anzeige
Anzeige
Ratgeber

SNS, Lambda und SES: Wie Nachrichtenverarbeitung mit Serverless Computing funktioniert

Die Cloud bietet viele spannende Dienste, sodass sie für Unternehmen weit mehr sein kann als reine Infrastruktur auf Basis von Netzwerken und virtuellen Maschinen. Aus der Fülle von über 100 von Amazon Web Services (AWS) bereitgestellten Diensten jedoch diejenigen zu identifizieren, die man wirklich braucht – und sich anschließend mit diesen auseinanderzusetzen, das ist eine andere Sache.

Von Oliver Höhne
4 Min.
Artikel merken
Anzeige
Anzeige

(Foto: Shutterstock / hugo_34)

Wann beschäftigt man sich mit neuen Diensten? In Unternehmen passiert das in der Regel immer dann, wenn bestimmte Einschränkungen umgangen oder Hürden überwunden werden müssen. Ein Beispiel ist der Einsatz von Cloudwatch. Das ist die von AWS bereitgestellte Monitoring-Lösung zur Überwachung der Infrastruktur in der Cloud. Will man beim Auftreten von Alarmen dafür individuelle Benachrichtigungen erstellen – zum Beispiel für den Helpdesk –, bietet der Alarm nur wenige Konfigurationsmöglichkeiten. Ein anderer Weg ist, die Nachrichten zunächst abzufangen, dann zu bearbeiten und abschließend weiterzusenden. Das klingt aufwendig, lässt sich aber mit bestimmten Diensten aus der Amazon-Cloud in kürzester Zeit mit einem serverlosen Ansatz lösen. Die Dienste des Vertrauens heißen SNS, Lambda und SES. Doch was verbirgt sich hinter diesen Akronymen?

SNS, Lambda und SES

Anzeige
Anzeige

SNS steht für Simple-Notification-Service und ist der von AWS verwaltete Dienst für Publish-/Subscribe-Benachrichtigungen zur Koordination der Zustellung von Nachrichten an abonnierende Endpunkte und Clients. Über dieses System lassen sich verschiedene Dienste durch sogenannte Themen verbinden. Diese werden wiederum von Konsumenten abonniert. Wird eine Nachricht an ein bestimmtes Thema gesendet, verteilt SNS diese an alle dazugehörigen Abonnenten.

AWS Lambda oder λ ist ein serverloser Datenverarbeitungsdienst, der den in der Funktion definierten Code beim Eintreffen bestimmter Ereignisse (zum Beispiel eine Nachricht in einem abonnierten SNS-Thema) ausführt. Man braucht sich nicht selbst um die Administration der Infrastruktur zu kümmern, da diese von AWS verwaltet wird. Dafür kann man sich voll und ganz auf den Code konzentrieren. Zudem wird nur die Rechenleistung berechnet, die tatsächlich genutzt wird. Ansonsten fallen keine zusätzlichen Kosten an.

Anzeige
Anzeige

Der letzte im Bunde ist der AWS Simple Email Service – kurz SES. Wie der Name vermuten lässt, stellt SES einen cloud-basierten Dienst zum Senden von E-Mails dar. Vor dem Versand muss eine eigene E-Mail-Adresse verifiziert werden. Erst dann kann von diesem Absender eine Nachricht direkt über AWS verschickt werden. Doch wie genau lässt sich diese serverlose Nachrichtenverarbeitung umsetzen?

Anzeige
Anzeige

Jetzt alle zusammen!

Die Basis bildet ein neues SNS-Thema, das die Cloudwatch-Alarme als Ziel wählen können. Wird ein Alarm ausgelöst, wird eine Nachricht an das Thema gesendet und alle Clients, die es abonniert haben, erhalten eine Meldung. Einer der sogenannten Konsumenten wird zum Kernstück in der Verarbeitungskette: die Lambda-Funktion.

Anzeige
Anzeige

Die Lambda-Funktion kann in verschiedenen Programmiersprachen entwickelt werden, zum Beispiel in Node.js oder Python. Bibliotheken, um mit der AWS-Umgebung zu kommunizieren, sind darin bereits enthalten. Mittels der AWS Identity-Access-Management-Rollen werden die Berechtigungen definiert. Es gibt verschiedene Möglichkeiten, um eine Funktion auszulösen. Zum Beispiel kann das SNS-Thema, das die Alarme aus Cloudwatch empfängt, als Auslöser dienen. Beim Auslösen durch das Auftreten einer neuen Nachricht innerhalb des abonnierten Themas wird der Funktion ein Event-Parameter im JSON-Format (JSON steht für Javascript Object Notation) übergeben. Daraus lässt sich eine SNS-Nachricht extrahieren, die alle wichtigen Informationen über den Auslöser und die Eigenschaften des Alarms enthält. Sobald die Instanz-ID ausgelesen wurde, kann man weitere Informationen beispielsweise über die EC2-Instanz (Elastic Compute Cloud) mittels Lambda direkt aus AWS abrufen. Voraussetzung dafür ist allerdings, dass alle Berechtigungen korrekt gesetzt wurden.

Wie lassen sich notwendige Informationen zur Schwere des Alarms oder der verantwortlichen Teams hinzufügen? Auch diese Details können aktuell noch nicht im Alarm konfiguriert werden. Ein Lösungsansatz wäre die Verwendung der Beschreibungsfelder der Alarme. Sobald weitere Wunschparameter im JSON-Format hinterlegt werden, können diese in der Lambda-Funktion komfortabel ausgelesen und für die E-Mail verwendet werden. Mit dieser Informationen lässt sich die gewünschte E-Mail für den Helpdesk konstruieren und anschließend über die bei SES registrierte E-Mail-Adresse versenden. Alternativ kann man ein weiteres SNS-Thema erstellen und als Ziel für die Nachrichten verwenden. Das können der Helpdesk oder andere Benutzer abonnieren.

Account-übergreifende Funktionalität

Wer sich jetzt die Frage stellt, ob er diese Konfiguration in jedem AWS-Account neu vornehmen muss  – Was auch bedeuten würde: Jedes Mal, wenn sich etwas ändert, den Code überall anpassen zu müssen. Wobei es auch hier Automatisierungsmöglichkeiten von AWS gibt –, dem sei die Angst genommen: Es reicht, die Funktion einmal zu erstellen, zum Beispiel in einem Shared-Services-Account. Sie kann anschließend für alle anderen Accounts, sei es für verschiedene Umgebungen oder Projekte, genutzt werden.

Anzeige
Anzeige

Das AWS-Berechtigungskonzept ermöglicht die Autorisierung von Ressourcen oder Diensten über Accounts hinweg. Dazu muss nur die Berechtigungsrichtlinie des SNS-Themas so modifiziert werden, dass das Thema Sender – und in diesem Fall Alarme – aus dem anderen Account akzeptiert. Danach kann das Thema in anderen Accounts zusätzlich als Ziel konfiguriert werden. Dieser Vorgang muss manuell mit Hilfe des Amazon-Ressourcennamen (ARN) erfolgen. Alternativ kann die Lambda-Funktion das SNS-Thema aus dem entsprechenden Accounts abonnieren. In diesem Fall muss die Berechtigung des Themas in dem Account, der die Alarmnachrichten empfängt, angepasst werden. Und zwar so, dass Abonnenten aus den anderen Accounts, speziell dem Account mit der Lambda-Funktion, akzeptiert werden.

Zusammenfassung

Dieser kurze Ausflug in die Welt des Serverless Computing zeigt, dass es sich lohnt, über den Tellerrand von reiner Infrastrukturbereitstellung in der Cloud zu blicken. Dadurch gelingt es, Aufgaben zu vereinfachen und zusätzlich Kosten zu sparen. Außerdem lässt sich festhalten, dass es nicht nur einen Weg gibt, um die Services zu nutzen, sondern dass sich diese sehr flexibel in bestehende Lösungen integrieren lassen.

Mehr zu diesem Thema
Fast fertig!

Bitte klicke auf den Link in der Bestätigungsmail, um deine Anmeldung abzuschließen.

Du willst noch weitere Infos zum Newsletter? Jetzt mehr erfahren

Anzeige
Anzeige
Ein Kommentar
Bitte beachte unsere Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Makobi

„Die Lambda-Funktion kann in verschiedenen Programmiersprachen entwickelt werden, zum Beispiel in Node.js oder Python.“

Genaugenommen ist Node.js keine Programmiersprache. Aber sonst ein guter Artikel. Vielen Dank dafür!

Antworten

Melde dich mit deinem t3n Account an oder fülle die unteren Felder aus.

Bitte schalte deinen Adblocker für t3n.de aus!
Hallo und herzlich willkommen bei t3n!

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team von mehr als 75 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Schon jetzt und im Namen der gesamten t3n-Crew: vielen Dank für deine Unterstützung! 🙌

Deine t3n-Crew

Anleitung zur Deaktivierung
Artikel merken

Bitte melde dich an, um diesen Artikel in deiner persönlichen Merkliste auf t3n zu speichern.

Jetzt registrieren und merken

Du hast schon einen t3n-Account? Hier anmelden

oder
Auf Mastodon teilen

Gib die URL deiner Mastodon-Instanz ein, um den Artikel zu teilen.

Anzeige
Anzeige