Dies ist der AWS CDK v2-Entwicklerhandbuch. Die ältere CDK Version 1 wurde am 1. Juni 2022 in die Wartung aufgenommen und der Support wurde am 1. Juni 2023 eingestellt.
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Beispiel: Erstellen Sie einen AWS Fargate Dienst mit dem AWS CDK
In diesem Beispiel zeigen wir Ihnen, wie Sie aus einem Image auf Amazon einen AWS Fargate Service erstellen, der auf einem Amazon Elastic Container Service (AmazonECS) -Cluster ausgeführt wird, dem ein mit dem Internet verbundener Application Load Balancer vorangestellt ist. ECR
Amazon ECS ist ein hoch skalierbarer, schneller Container-Management-Service, der es einfach macht, Docker Container in einem Cluster auszuführen, zu stoppen und zu verwalten. Sie können Ihren Cluster auf einer serverlosen Infrastruktur hosten, die von Amazon verwaltet wird, ECS indem Sie Ihre Dienste oder Aufgaben mit dem Fargate-Starttyp starten. Für mehr Kontrolle können Sie Ihre Aufgaben auf einem Cluster von Amazon Elastic Compute Cloud (AmazonEC2) -Instances hosten, die Sie mithilfe des EC2 Amazon-Starttyps verwalten.
In diesem Beispiel starten wir einige Dienste mit dem Starttyp Fargate. Wenn Sie den verwendet haben, AWS Management Console um einen Fargate-Dienst zu erstellen, wissen Sie, dass Sie viele Schritte ausführen müssen, um diese Aufgabe zu erledigen. AWS enthält mehrere Tutorials und Dokumentationsthemen, die Sie durch die Erstellung eines Fargate-Dienstes führen, darunter:
In diesem Beispiel wird ein ähnlicher Fargate-Dienst mit dem AWS CDK erstellt.
Das in diesem Beispiel verwendete ECS Amazon-Konstrukt hilft Ihnen bei der Nutzung von AWS Diensten, indem es die folgenden Vorteile bietet:
-
Konfiguriert automatisch einen Load Balancer.
-
Öffnet automatisch eine Sicherheitsgruppe für Load Balancer. Dadurch können Load Balancer mit Instances kommunizieren, ohne explizit eine Sicherheitsgruppe erstellen zu müssen.
-
Ordnet automatisch die Abhängigkeit zwischen dem Service und dem Load Balancer an, der einer Zielgruppe zugeordnet ist. Dabei wird die richtige Reihenfolge bei der Erstellung des Listeners AWS CDK erzwungen, bevor eine Instanz erstellt wird.
-
Konfiguriert automatisch Benutzerdaten für automatisch skalierende Gruppen. Dadurch wird die richtige Konfiguration erstellt, der ein Cluster zugeordnet AMIs werden kann.
-
Validiert Parameterkombinationen frühzeitig. Dadurch werden AWS CloudFormation Probleme früher aufgedeckt, wodurch Bereitstellungszeit gespart wird. Je nach Aufgabe ist es beispielsweise leicht, die Speichereinstellungen falsch zu konfigurieren. Bisher trat kein Fehler auf, bis wir unsere App bereitgestellt hatten. Aber jetzt AWS CDK können sie eine Fehlkonfiguration erkennen und einen Fehler ausgeben, wenn wir unsere App synthetisieren.
-
Fügt automatisch Berechtigungen für Amazon Elastic Container Registry (AmazonECR) hinzu, wenn wir ein Image von Amazon verwendenECR.
-
Skaliert automatisch. Das AWS CDK bietet eine Methode, mit der wir Instances auto skalieren können, wenn wir einen EC2 Amazon-Cluster verwenden. Dies geschieht automatisch, wenn wir eine Instanz in einem Fargate-Cluster verwenden.
Darüber hinaus AWS CDK verhindert dies, dass eine Instanz gelöscht wird, wenn die automatische Skalierung versucht, eine Instanz zu stoppen, aber entweder eine Aufgabe auf dieser Instanz läuft oder geplant ist.
Bisher mussten wir eine Lambda-Funktion erstellen, um diese Funktionalität zu haben.
-
Bietet Asset-Support, sodass wir ECS in einem Schritt eine Quelle von unserem Computer für Amazon bereitstellen können. Bisher mussten wir zur Verwendung einer Anwendungsquelle mehrere manuelle Schritte ausführen, z. B. das Hochladen auf Amazon ECR und das Erstellen eines Docker Images.
Wichtig
Die ApplicationLoadBalancedFargateService
Konstrukte, die wir verwenden werden, umfassen zahlreiche AWS
Komponenten, von denen einige mit nicht unerheblichen Kosten verbunden sind, wenn sie auf unserem AWS Konto bereitgestellt werden, auch wenn wir sie nicht verwenden. Achten Sie darauf, clean up (cdk destroy) zu verwenden, wenn Sie diesem Beispiel folgen.
Erstellen Sie ein CDK Projekt
Wir beginnen mit der Erstellung eines CDK Projekts. Dies ist ein Verzeichnis, in dem unser AWS CDK Code gespeichert ist, einschließlich unserer CDK App.
Als Nächstes führen wir die App aus und bestätigen, dass sie einen leeren Stapel erstellt.
cdk synth
Einen Fargate-Dienst erstellen
Es gibt zwei verschiedene Möglichkeiten, wie wir unsere Container-Aufgaben mit Amazon ausführen könnenECS:
-
Verwenden Sie den
Fargate
Starttyp, bei dem Amazon die physischen Maschinen ECS verwaltet, auf denen unsere Container für uns laufen. -
Verwenden Sie den
EC2
Starttyp, bei dem wir die Verwaltung übernehmen, z. B. die Angabe der automatischen Skalierung.
In diesem Beispiel erstellen wir einen Fargate-Service, der auf einem ECS Amazon-Cluster ausgeführt wird und von einem mit dem Internet verbundenen Application Load Balancer unterstützt wird.
Wir fügen unserer Stack-Datei die folgenden Modulimporte der AWS Construct Library hinzu:
In unserem Stack fügen wir den folgenden Code hinzu:
Als Nächstes validieren wir unseren Code, indem wir Folgendes ausführen, um unseren Stack zu synthetisieren:
cdk synth
Der Stapel besteht aus Hunderten von Zeilen, daher werden wir ihn hier nicht zeigen. Der Stack sollte eine Standardinstanz, ein privates Subnetz und ein öffentliches Subnetz für die drei Availability Zones sowie eine Sicherheitsgruppe enthalten.
Um den Stack bereitzustellen, führen wir Folgendes aus:
cdk deploy
AWS CloudFormation zeigt Informationen zu den Dutzenden von Schritten an, die bei der Bereitstellung unserer App erforderlich sind.
Nach Abschluss der Bereitstellung haben wir erfolgreich einen von Fargate betriebenen ECS Amazon-Service zum Ausführen eines Docker Images erstellt.
Bereinigen
Als allgemeine bewährte Methode zur Wartung und zur Minimierung unnötiger Kosten löschen wir unseren Stack, wenn er abgeschlossen ist:
cdk destroy