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.
Erste Schritte mit Amazon ECS mit AWS CDK
AWS Cloud Development Kit (AWS CDK) ist ein Infrastructure as Code (IAC)-Framework, mit dem Sie AWS–Cloud-Infrastruktur mit einer von Ihnen gewählten Programmiersprache definieren können. Um Ihre eigene Cloud-Infrastruktur zu definieren, schreiben Sie zunächst eine App (in einer der unterstützten Sprachen des CDK), die einen oder mehrere Stacks enthält. Dann synthetisieren Sie es zu einem AWS CloudFormation und stellen Sie Ihre Ressourcen in Ihr AWS-Konto. Folgen Sie in diesem Thema diesen Schritte, um einen containerisierten Webserver mit Amazon Elastic Container Service (Amazon ECS) und dem AWS CDK auf Fargate bereitstellen.
Die AWS-Construct Library, die im CDK enthalten ist, stellt Module bereit, mit denen Sie die von AWS-Services bereitgestellten Ressourcen modellieren können. Für die gängigen Dienste stellt die Bibliothek kuratierte Konstrukte bereit, die intelligente Standards und bewährte Methoden bereitstellen. Eines dieser Module, insbesondere aws-ecs-patterns
, bietet Abstraktionen auf hoher Ebene, mit denen Sie Ihren containerisierten Service und alle notwendigen unterstützenden Ressourcen in nur wenigen Codezeilen definieren können.
In diesem Thema wird das Konstrukt ApplicationLoadBalancedFargateService
verwendet. Dieses Konstrukt stellt einen Amazon-ECS-Service auf Fargate hinter einem Application Load Balancer bereit. Das aws-ecs-patterns
-Modul enthält auch Konstrukte, die ein Network Load Balancer verwenden und auf Amazon EC2 ausgeführt werden.
Bevor Sie mit dieser Aufgabe beginnen, richten SieAWS CDK-Entwicklungsumgebung ein, und installieren Sie AWS CDK, indem Sie den folgenden Befehl ausführen. Anleitungen zum Einrichten der AWS CDK-Entwicklungsumgebung finden Sie unterErste Schritte mitAWS CDK - Voraussetzungen.
npm install -g aws-cdk
Anmerkung
Bei dieser Anleitung wird davon ausgegangen, dass Sie das AWS CDK v2 verwenden.
Themen
Schritt 1: Einrichten des Projekts AWS CDK
Erstellen Sie ein Verzeichnis für Ihre neue AWS CDK-App und initialisieren Sie das Projekt.
Anmerkung
Die AWS CDK-Anwendungsvorlage verwendet den Namen des Projektverzeichnisses, um Namen für Quelldateien und -klassen zu generieren. In diesem Beispiel trägt das Verzeichnis den Namen hello-ecs
. Wenn Sie einen anderen Projektverzeichnisnamen verwenden, stimmt Ihre App nicht mit diesen Anweisungen überein.
AWS CDK v2 enthält stabile Konstrukte für alle AWS-Services in einem einzigen Paket, genannt aws-cdk-lib
. Dieses Paket wird als Abhängigkeit installiert, wenn Sie das Projekt initialisieren. Wenn Sie mit bestimmten Programmiersprachen arbeiten, wird das Paket installiert, wenn Sie das Projekt zum ersten Mal erstellen. Dieses Thema behandelt, wie wir ein Konstrukt von Amazon ECS Patterns, das hochrangige Abstraktionen für die Arbeit mit Amazon ECS bietet, verwenden. Dieses Modul stützt sich auf Amazon-ECS-Konstrukte und andere Konstrukte, um die für Ihre Amazon-ECS-Anwendung erforderlichen Ressourcen bereitzustellen.
Die Namen, die Sie zum Importieren dieser Bibliotheken in Ihre CDK-Anwendung verwenden, unterscheiden sich möglicherweise geringfügig, je nachdem welche Programmiersprache Sie verwenden. Als Referenz finden Sie nachfolgend die Namen, die in jeder unterstützten CDK-Programmiersprache verwendet werden.
Schritt 2: Verwendung von AWS CDK, um einen containerisierten Webserver auf Fargate zu definieren
Verwenden Sie das Container-Image amazon-ecs-sample
In dem AWS CDK-Projekt, das Sie erstellt haben, bearbeiten Sie die Datei, die die Stack-Definition enthält, so, dass sie einem der folgenden Beispiele ähnelt.
Anmerkung
Ein Stack ist eine Einheit der Bereitstellung. Alle Ressourcen müssen sich in einem Stack befinden, und alle Ressourcen, die sich in einem Stack befinden, werden gleichzeitig bereitgestellt. Wenn eine Ressource nicht bereitgestellt werden kann, werden alle anderen, die bereits bereitgestellt wurden, zurückgesetzt. Eine AWS CDK-App kann mehrere Stacks enthalten und Ressourcen in einem Stack können sich auf Ressourcen in einem anderen Stack beziehen.
Das vorangegangene kurze Snippet beinhaltet Folgendes:
-
Der logische Name des Dienstes:
MyWebServer
. -
Das Container-Image, das von abgerufen wurde DockerHub:
amazon/amazon-ecs-sample
. -
Andere relevante Informationen, wie die Tatsache, dass der Load Balancer eine öffentliche Adresse hat und über das Internet zugänglich ist.
AWS CDK erstellt alle Ressourcen, die für die Bereitstellung des Webservers erforderlich sind, einschließlich der folgenden Ressourcen. Diese Ressourcen wurden in diesem Beispiel weggelassen.
-
Amazon-ECS-Cluster
-
Amazon VPC- und Amazon EC2-Instances
-
Auto Scaling-Gruppe
-
Application Load Balancer
-
IAM-Rollen und -Richtlinien
Einige automatisch bereitgestellte Ressourcen werden von allen Amazon-ECS-Diensten, die im Stack definiert sind, geteilt.
Speichern Sie die Quelldatei, und führen Sie dann das Kommando cdk synth
im Hauptverzeichnis Ihrer App aus. AWS CDK führt die App aus, synthetisiert eine AWS CloudFormation-Vorlage aus ihr und zeigt dann die Vorlage an. Die Vorlage ist eine etwa 600-zeilige YAML-Datei. Der Anfang der Datei wird hier gezeigt. Ihre Vorlage kann sich von diesem Beispiel unterscheiden.
Resources: MyWebServerLB3B5FD3AB: Type: AWS::ElasticLoadBalancingV2::LoadBalancer Properties: LoadBalancerAttributes: - Key: deletion_protection.enabled Value: "false" Scheme: internet-facing SecurityGroups: - Fn::GetAtt: - MyWebServerLBSecurityGroup01B285AA - GroupId Subnets: - Ref: EcsDefaultClusterMnL3mNNYNVpcPublicSubnet1Subnet3C273B99 - Ref: EcsDefaultClusterMnL3mNNYNVpcPublicSubnet2Subnet95FF715A Type: application DependsOn: - EcsDefaultClusterMnL3mNNYNVpcPublicSubnet1DefaultRouteFF4E2178 - EcsDefaultClusterMnL3mNNYNVpcPublicSubnet2DefaultRouteB1375520 Metadata: aws:cdk:path: HelloEcsStack/MyWebServer/LB/Resource MyWebServerLBSecurityGroup01B285AA: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: Automatically created Security Group for ELB HelloEcsStackMyWebServerLB06757F57 SecurityGroupIngress: - CidrIp: 0.0.0.0/0 Description: Allow from anyone on port 80 FromPort: 80 IpProtocol: tcp ToPort: 80 VpcId: Ref: EcsDefaultClusterMnL3mNNYNVpc7788A521 Metadata: aws:cdk:path: HelloEcsStack/MyWebServer/LB/SecurityGroup/Resource # and so on for another few hundred lines
Um den Dienst in Ihrem AWS-Konto durchzuführen, führen Sie das Kommando cdk deploy
im Hauptverzeichnis Ihrer Anwendung aus. Sie werden aufgefordert, die von AWS CDK generieren IAM-Richtlinien zu genehmigen.
Die Bereitstellung dauert mehrere Minuten, in denen AWS CDK mehrere Ressourcen erstellt. Die letzten Zeilen der Ausgabe der Bereitstellung enthalten den öffentlichen Hostnamen des Load Balancers und Ihre URL für den neuen Webserver. Diese sind Folgende:
Outputs: HelloEcsStack.MyWebServerLoadBalancerDNSXXXXXXX = Hello-MyWeb-ZZZZZZZZZZZZZ-ZZZZZZZZZZ.us-west-2.elb.amazonaws.com HelloEcsStack.MyWebServerServiceURLYYYYYYYY = http://Hello-MyWeb-ZZZZZZZZZZZZZ-ZZZZZZZZZZ.us-west-2.elb.amazonaws.com
Schritt 3: Test des Webservers
Kopieren Sie die URL aus der Bereitstellungsausgabe und fügen Sie diese in Ihren Webbrowser ein. Die folgende Willkommensnachricht vom Webserver wird angezeigt.
Schritt 4: Bereinigen
Wenn Sie mit dem Webserver fertig sind, beenden Sie den Dienst mit dem CDK, indem Sie das Kommando cdk destroy
im Hauptverzeichnis Ihrer Anwendung ausführen. Auf diese Weise wird verhindert, dass Ihnen zukünftig unbeabsichtigte Gebühren anfallen.
Nächste Schritte
Weitere Informationen zur Entwicklung der AWS-Infrastruktur unter Verwendung von AWS CDK finden Sie im AWS CDK-Entwicklerhandbuch.
Informationen zum Schreiben von AWS CDK-Apps in der Sprache Ihrer Wahl finden Sie nachfolgend:
Weitere Informationen über die Module der AWS Construct Library, die in diesem Thema verwendet werden, finden Sie in den folgenden Übersichten aus der AWS CDK-API-Referenz.