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.
Erstellen von ECS Amazon-Ressourcen mit dem AWS CDK
Das AWS Cloud Development Kit (AWS CDK) ist ein Infrastructure-as-Code (IAC) -Framework, das Sie verwenden können, um die AWS Cloud-Infrastruktur mithilfe einer Programmiersprache Ihrer Wahl zu definieren. Um Ihre eigene Cloud-Infrastruktur zu definieren, schreiben Sie zunächst eine App (in einer CDK der unterstützten Sprachen), die einen oder mehrere Stacks enthält. Anschließend synthetisieren Sie es zu einer AWS CloudFormation Vorlage und stellen Ihre Ressourcen auf Ihrem bereit. AWS-Konto Folgen Sie den Schritten in diesem Thema, um einen containerisierten Webserver mit Amazon Elastic Container Service (AmazonECS) und dem AWS CDK auf Fargate bereitzustellen.
Die AWS Construct-Bibliothek, die im Lieferumfang von enthalten istCDK, stellt Module bereit, mit denen Sie die bereitgestellten Ressourcen modellieren können. AWS-Services 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 ECS Amazon-Service auf Fargate hinter einem Application Load Balancer bereit. Das aws-ecs-patterns
Modul enthält auch Konstrukte, die einen Network Load Balancer verwenden und auf Amazon laufen. EC2
Bevor Sie mit dieser Aufgabe beginnen, richten Sie Ihre AWS CDK Entwicklungsumgebung ein und installieren Sie sie, AWS CDK indem Sie den folgenden Befehl ausführen. Anweisungen zum Einrichten Ihrer AWS CDK Entwicklungsumgebung finden Sie unter Erste Schritte mit den AWS CDK — Voraussetzungen.
npm install -g aws-cdk
Anmerkung
Bei diesen Anweisungen wird davon ausgegangen, dass Sie AWS CDK Version 2 verwenden.
Themen
Schritt 1: Richten Sie Ihr AWS CDK Projekt ein
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, das aufgerufen wirdaws-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. In diesem Thema wird beschrieben, wie Sie ein Amazon ECS Patterns-Konstrukt verwenden, das Abstraktionen auf hoher Ebene für die Arbeit mit Amazon ECS bereitstellt. Dieses Modul stützt sich auf ECS Amazon-Konstrukte und andere Konstrukte, um die Ressourcen bereitzustellen, die Ihre ECS Amazon-Anwendung benötigt.
Die Namen, die Sie verwenden, um diese Bibliotheken in Ihre CDK Anwendung zu importieren, können sich je nach verwendeter Programmiersprache geringfügig unterscheiden. Als Referenz werden im Folgenden die Namen aufgeführt, die in jeder unterstützten CDK Programmiersprache verwendet werden.
Schritt 2: Verwenden Sie den AWS CDK , um einen containerisierten Webserver auf Fargate zu definieren
Verwenden Sie das Container-Image von. amazon-ecs-sample
Bearbeiten Sie in dem von Ihnen erstellten AWS CDK Projekt 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 Stapel enthalten, und Ressourcen in einem Stapel können auf Ressourcen in einem anderen Stapel verweisen.
Das vorangegangene kurze Snippet beinhaltet Folgendes:
-
Der logische Name des Dienstes:
MyWebServer
. -
Das Container-Image, das abgerufen wurde von 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.
Das erstellt AWS CDK alle Ressourcen, die für die Bereitstellung des Webservers erforderlich sind, einschließlich der folgenden Ressourcen. Diese Ressourcen wurden in diesem Beispiel weggelassen.
-
ECSAmazon-Cluster
-
Amazon VPC - und EC2 Amazon-Instances
-
Auto Scaling-Gruppe
-
Application Load Balancer
-
IAM-Rollen und -Richtlinien
Einige automatisch bereitgestellte Ressourcen werden von allen im Stack definierten ECS Amazon-Services gemeinsam genutzt.
Speichern Sie die Quelldatei, und führen Sie dann das Kommando cdk synth
im Hauptverzeichnis Ihrer App aus. Der AWS CDK führt die App aus, synthetisiert daraus eine AWS CloudFormation Vorlage und zeigt dann die Vorlage an. Die Vorlage ist eine Datei mit etwa 600 Zeilen. YAML 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 bereitzustellen AWS-Konto, führen Sie den cdk deploy
Befehl im Hauptverzeichnis Ihrer Anwendung aus. Sie werden aufgefordert, die AWS CDK generierten IAM Richtlinien zu genehmigen.
Die Bereitstellung dauert mehrere Minuten, in denen mehrere Ressourcen AWS CDK erstellt werden. Die letzten Zeilen der Ausgabe der Bereitstellung enthalten den öffentlichen Hostnamen des Load Balancers und den Ihres neuen Webservers. URL 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 Ausgabe URL aus der Bereitstellung und fügen Sie sie 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 mithilfe von, CDK indem Sie den cdk destroy
Befehl 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 einer AWS Infrastruktur mithilfe von finden Sie im AWS CDK Entwicklerhandbuch. AWS CDK
Informationen zum Schreiben von AWS CDK Apps in der Sprache Ihrer Wahl finden Sie im Folgenden:
Weitere Informationen zu den in diesem Thema verwendeten AWS Construct-Library-Modulen finden Sie in den folgenden AWS CDK API Referenzübersichten.