In Cloud-Architekturen interagieren viele Komponenten miteinander: Anwendungen wollen bereitgestellt und automatisch skaliert, Datenbanken und Integrationsdienste wie Load Balancer verwaltet werden. Das AWS Cloud Development Kit hilft dabei, das komplexe Szenario zu bewältigen.
Mit dem Cloud Development Kit können Entwickler benötigte Cloud-Resourcen mit ihnen bekannten Programmiersprachen definieren.
Über die Zeit haben sich verschiedene Ansätze herausgebildet, um die Infrastrukturverwaltung automatisierbar zu machen. Diese Vorgänge sollten dann vor allem auch wiederholbar sein, damit nicht jedes Team die Komponenten manuell neu aufsetzen muss.
Von initialen Bash-Skripten über Playbooks (um einzelne virtuelle Maschinen zu provisionieren) haben sich IaC-, sprich „Infrastructure as Code“-Technologien entwickelt. Im Falle der AWS Cloud lässt sich dabei mit Hilfe von YAML oder JSON die entsprechende Infrastruktur beschreiben und dann mit dem AWS CloudFormation Service ausrollen.
CloudFormation kümmert sich dann um die konsistente Bereitstellung der Infrastruktur. Hier ein YAML-Template zur Bereitstellung eines Amazon Simple Storage Service Buckets:
AWSTemplateFormatVersion: '2010-09-09'Parameters: S3BucketNameParameter: Type: String Default: my-default-bucket-name Description: Name for your AWS S3 bucket MinLength: 5 MaxLength: 30Resources: S3Bucket: Type: AWS::S3::Bucket Properties: BucketName: Ref: S3BucketNameParameter DeletionPolicy: RetainOutputs: Bucketname: Description: Name of AWS S3 Bucket
Cloud-Architekturen verwalten mit dem Cloud Development Kit
Basierend auf CloudFormation hat sich jedoch eine weitere Möglichkeit etabliert, um Infrastruktur zu modellieren: das Cloud Development Kit (CDK). Das CDK erlaubt es, die Cloud-Ressourcen mit Hilfe von gängigen Programmiersprachen zu definieren.
Neben TypeScript und Python werden auch Java und .NET unterstützt. Dadurch bietet das CDK die Freiheit alle gängigen Sprachspezifischen Bordmittel zu verwenden, um beispielsweise wiederkehrende Konstrukte in der Form von NPM-Modulen oder Maven-Artefakten zu definieren und in anderen Projekten zu importieren.
Entwickler können ihre Erfahrung mit diesen Sprachen also auch für die Verwaltung von Cloud-Ressourcen zu nutzen. Das CDK erfreut sich dabei einer wachsenden aktiven Community, dedizierter Entwickler-Teams und einer Vielzahl an Lösungen und wiederverwendbaren Modulen die auf CDK basieren. Das CDK ist dabei Open Source und die entsprechende CDK-Roadmap ist öffentlich verfügbar.
Ablaufdiagramm für das Cloud Devleopment Kit.
(Bild: Amazon Web Services)
Im CDK wird die benötigte Infrastruktur in einer der unterstützten Programmiersprachen definiert. Diese besteht aus einzelnen Konstrukten. Für das Deployment werden die Konstrukte validiert und danach in CloudFormation Templates synthetisiert. Dieses Template wird dann mittels CloudFormation deployed.
Code-Beispiel für AWS CDK
Als Beispiel soll hier eine Serverless Anwendung dienen. Mit dem Serverless-Ausführungsmodell werden sämtliche Infrastruktur-Verwaltungsaufgaben – wie beispielsweise die Bereitstellung, der Betrieb, aber auch die Skalierung der Anwendung – an den Cloud-Anbieter ausgelagert. Der Kunde bezahlt dabei die Ressourcen nur solange, wie sie zur Ausführung seines Codes benötigt werden.
Übersicht der genutzten AWS Ressourcen.
(Bild: Amazon Web Services)
Konkret soll uns eine Serverless Lambda Funktion dienen, die für wiederkehrende Verwaltungsaufgaben eingesetzt werden kann, beispielsweise das Erstellen von Backups, Statusprüfungen oder das Löschen von nicht mehr benötigten Ressourcen. Diese Funktion wird basierend auf einem Cron-Job alle 5 Minuten aufgerufen.
Im CDK Code wird dafür zuerst der Stack definiert. Der Stack bildet dabei die Einheit aller Ressourcen die gemeinsam bereitgestellt werden sollen. Innerhalb des Konstruktors des Stacks wird eine Lambda-Funktion, in der unsere Anwendung läuft, konfiguriert.
Hierbei definieren wir das lauffähige Artefakt und die JavaScript-Funktion die beim Aufruf ausgeführt werden soll, die Laufzeitkonfiguration, sprich Node.JS 14, und die RAM-Konfiguration von 128 MB, die der Anwendung zur Verfügung steht. Zuletzt wird noch die maximale Laufzeit der Funktion von 30 Sekunden angegeben. Außerdem konfigurieren wir eine Regel, die zeitbasiert (alle 5 Minuten) aufgerufen wird und wiederum die Lambda-Funktion aufruft.
Nach der Klassendefinition konfigurieren wir noch den entsprechenden Stack. Dabei wird die gewünschte AWS Region Frankfurt (eu-central-1) hartkodiert, in der dieser Stack ausgeführt werden soll. Im Folgenden der CDK Code zur Bereitstellung einer Lambda-Funktion, die basierend auf einem Cron-Job getriggert wird.
import { App, Duration, Stack, StackProps } from '@aws-cdk/core'; import * as lambda from '@aws-cdk/aws-lambda'; import * as events from '@aws-cdk/aws-events'; import * as targets from '@aws-cdk/aws-events-targets'import fs = require('fs');export class LambdaCronStack extends Stack { constructor(app: App, id: string, props?: StackProps) { super(app, id, props); // Erstellung der Lambda Funktion const lambdaFn = new lambda.Function(this, 'Beispiel-Funktion', { code: new lambda.InlineCode( fs.readFileSync('lambda-handler.js', { encoding: 'utf-8' })), handler: 'index.handler', runtime: lambda.Runtime.NODEJS_14_X, memorySize: 128, timeout: Duration.seconds(30) }); // Erstellung des Cron Jobs const rule = new events.Rule(this, 'Beispiel-Cron-Job', { schedule: events.Schedule.rate(Duration.minutes(5)) }); // Verbindung des Cron Jobs mit der Lambda Funktion rule.addTarget(new targets.LambdaFunction(lambdaFn)); } }const app = new App(); new LambdaCronStack(app, 'LambdaCronExample', { env: { region: 'eu-central-1' }});
Mit den folgenden Kommandos lässt sich die Infrastruktur bereitstellen:
$ npm install -g aws-cdk // Installiert das AWS CDK $ npm install // Installiert benötigte Abhängigkeiten $ cdk bootstrap // Setzt CDK in Region/Account auf $ cdk deploy // Deployed den CDK Stack
Der folgende Befehl dient dazu, sich das entsprechend generierte Template anzeigen zu lassen.
$ cdk synth // Synthetisiert den CDK Code in ein CloudFormation template
Sobald der Stack nicht mehr benötigt wird, können alle diese Ressourcen mit einem Befehl bereinigt werden, um Kosten zu sparen:
$ cdk destroy
Diese und weitere Beispiele sind in folgendem CDK-Beispiele-Repository bei GitHub zu finden. Für eine detaillierte Dokumentation zur Verwendung einzelner Services sei hier auf die CDK-Dokumentation verwiesen.
Stand: 08.12.2025
Es ist für uns eine Selbstverständlichkeit, dass wir verantwortungsvoll mit Ihren personenbezogenen Daten umgehen. Sofern wir personenbezogene Daten von Ihnen erheben, verarbeiten wir diese unter Beachtung der geltenden Datenschutzvorschriften. Detaillierte Informationen finden Sie in unserer Datenschutzerklärung.
Einwilligung in die Verwendung von Daten zu Werbezwecken
Ich bin damit einverstanden, dass die Vogel IT-Medien GmbH, Max-Josef-Metzger-Straße 21, 86157 Augsburg, einschließlich aller mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen (im weiteren: Vogel Communications Group) meine E-Mail-Adresse für die Zusendung von Newslettern und Werbung nutzt. Auflistungen der jeweils zugehörigen Unternehmen können hier abgerufen werden.
Der Newsletterinhalt erstreckt sich dabei auf Produkte und Dienstleistungen aller zuvor genannten Unternehmen, darunter beispielsweise Fachzeitschriften und Fachbücher, Veranstaltungen und Messen sowie veranstaltungsbezogene Produkte und Dienstleistungen, Print- und Digital-Mediaangebote und Services wie weitere (redaktionelle) Newsletter, Gewinnspiele, Lead-Kampagnen, Marktforschung im Online- und Offline-Bereich, fachspezifische Webportale und E-Learning-Angebote. Wenn auch meine persönliche Telefonnummer erhoben wurde, darf diese für die Unterbreitung von Angeboten der vorgenannten Produkte und Dienstleistungen der vorgenannten Unternehmen und Marktforschung genutzt werden.
Meine Einwilligung umfasst zudem die Verarbeitung meiner E-Mail-Adresse und Telefonnummer für den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern wie z.B. LinkedIN, Google und Meta. Hierfür darf die Vogel Communications Group die genannten Daten gehasht an Werbepartner übermitteln, die diese Daten dann nutzen, um feststellen zu können, ob ich ebenfalls Mitglied auf den besagten Werbepartnerportalen bin. Die Vogel Communications Group nutzt diese Funktion zu Zwecken des Retargeting (Upselling, Crossselling und Kundenbindung), der Generierung von sog. Lookalike Audiences zur Neukundengewinnung und als Ausschlussgrundlage für laufende Werbekampagnen. Weitere Informationen kann ich dem Abschnitt „Datenabgleich zu Marketingzwecken“ in der Datenschutzerklärung entnehmen.
Falls ich im Internet auf Portalen der Vogel Communications Group einschließlich deren mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen geschützte Inhalte abrufe, muss ich mich mit weiteren Daten für den Zugang zu diesen Inhalten registrieren. Im Gegenzug für diesen gebührenlosen Zugang zu redaktionellen Inhalten dürfen meine Daten im Sinne dieser Einwilligung für die hier genannten Zwecke verwendet werden. Dies gilt nicht für den Datenabgleich zu Marketingzwecken.
Recht auf Widerruf
Mir ist bewusst, dass ich diese Einwilligung jederzeit für die Zukunft widerrufen kann. Durch meinen Widerruf wird die Rechtmäßigkeit der aufgrund meiner Einwilligung bis zum Widerruf erfolgten Verarbeitung nicht berührt. Um meinen Widerruf zu erklären, kann ich als eine Möglichkeit das unter https://contact.vogel.de abrufbare Kontaktformular nutzen. Sofern ich einzelne von mir abonnierte Newsletter nicht mehr erhalten möchte, kann ich darüber hinaus auch den am Ende eines Newsletters eingebundenen Abmeldelink anklicken. Weitere Informationen zu meinem Widerrufsrecht und dessen Ausübung sowie zu den Folgen meines Widerrufs finde ich in der Datenschutzerklärung.
Fazit
Neben den erwähnten Punkten bietet der Infrastructure as Code Ansatz auch den Vorteil, dass Infrastrukturbeschreibungen mit in der existierenden Codebasis verwaltet werden können. Das gleiche gilt auch für automatisierte Unit-Tests: mit diesen lässt sich sicherstellen, dass die Infrastruktur-Definition weiterhin valide bleibt und keine essenziellen Aspekte verloren gehen.
Luis Morales
(Bild: Amazon Web Services)
Wie wir in unserer Demo-Anwendung gesehen haben, ist es einfach, in das Infrastrukturmanagement mit CDK einzusteigen. Wir können AWS Cloud-Services definieren, konfigurieren und Laufzeitinformationen übergeben. Das entsprechende Beispiel kann an entsprechende Verwaltungs-Usecases mit minimalem Aufwand angepasst werden. Alternativ kann der Code mit nur wenigen Anpassungen als Konstrukt herausgelöst werden und somit für wiederkehrende Verwaltungsaufgaben eingesetzt werden.
* Luis Morales arbeitet als Solutions Architect bei AWS. Er ist spezialisiert auf die Themen Software-Engineering, testgetriebene Entwicklung, verteilte Systeme, Everything as Code und Sicherheit.