Infrastruktur Optimieren mit CDK Solutions Constructs Teil I.

28th June 2020

Ahoi AWS'ler

Kürzlich wurden die ersten CDK Solution Constructs released. Sie versprechen ein neues Abstraktionslevel für CDK Constructs indem sie oft genutzte Cloudformation Patterns in eigene CDK Constructs zusammenfassen. Zum Beispiel wenn ein API GateWay mit einem Lambdaproxy verwendet werden soll, kann dafür das aws-apigateway-lambda Solution Construct verwendet werden.

Ein toller AWS Blogpost demonstriert die Kombination zweier solcher Solution Constructs sehr gut. Weiterhin versprechen die CDK Solution Constructs sich am well-architected Framework zu orientieren, um so zum Beispiel die fünf Pillars Operational Excellence, Security, Reliability, Performance Efficiency und Cost Optimization best möglichst mit in das CDK Deployment einzubeziehen. Das und die Einsparung an CDK Codezeilen hat mich dazu bewegt zu untersuchen ob mein Alfresco Provisioner CDK Deployment von einigen CDK Solution Constructs profitieren könnten. In den nächsten Abschnitten beschreibe ich ein CDK Solution Pattern as ich erfolgreich in mein Deployment einbauen konnte.

AWS DynamoDB Stream to Lambda

Dieses Pattern, auch zu sehen in Github, beschreibt das oft verwendete Vorhaben eine DynamoDB Tabelle bei Änderungen in den Items mittels eines Streams ein Lambda aufzurufen um ggf. auf Änderungen wie Erstellen, Editieren oder Löschen reagieren zu können. Ein Beispiel dafür könnte sein, wenn das Item aus der Tabelle gelöscht wird, kann es woanders kostengünstiger persistiert werden.

In mein Deployment verwende ich es direkt um die EC2 instanzen gemäß der Wunschkonfiguration in der Tabelle abzubilden. Soll nun zum Beispiel die EC2 Instanz gestoppt wird nur noch stopped in die expectedStatus Spalte der Tabelle geschrieben. Soll die Instanz wieder gestartet werden reicht die Änderung auf running. Soll die Instanz komplett gelöscht werden, kann das Item einfach gelöscht werden und das gestreamte Lambda sorgt dafür, dass die Instanz gelöscht wird.

Meine vorherige Lösung sah dafür die alleinige Verwendung von StepFunction vor, aber Streams dafür zu benutzen ist wesentlich vorteilhafter und spart darüber hinaus viele Zeilen Code. Auch finde ich toll, dass das Pattern den Stream weg abstrahiert und ich mir nur noch Gedanken um die Tabelle und das Lambda machen muss.

Zusammenfassung

Die CDK Solution Constructs sind tolle Pattern die die Erstellung der AWS Infrastruktur massiv vereinfacht und dabei sogar das well-architected Framework mitbeachtet. Nächste Woche will ich versuchen das nächste Pattern Cloudfront S3 zu integrieren. Seit gespannt!

Mit großer Spannung verfolge ich die Entwicklungen der CDK Solution Constructs. Habt ihr schon Erfahrungen gemacht mit CDK oder sogar schon mit den CDK Solution Constructs? Wenn ja für was? Falls ihr Fragen oder Anregungen habt, lasst es mich wissen.

An die tollen Leser dieses Artikels sei gesagt, dass Feedback jeglicher Art gerne gesehen ist. In Zukunft werde ich versuchen hier eine Diskussionsfunktion einzubauen. Bis dahin sendet mir doch bitte direkten Feedback über meine Sozial Media accounts wie Twitter oder FaceBook. Vielen Dank :).

Ich liebe es an Content Management Open Source Projekte zu arbeiten. Vieles kannst du bereits frei nutzen auf www.github.com/mmuller88 . Wenn du meine dortige Arbeit sowie meine Blog Posts toll findest, denke doch bitte darüber nach, mich zu unterstützen und ein Patreon zu werden:

Werde ein Patreon!

Share