Stellen Sie mithilfe von AWS Copilot eine geclusterte Anwendung in Amazon ECS bereit - AWS Prescriptive Guidance

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.

Stellen Sie mithilfe von AWS Copilot eine geclusterte Anwendung in Amazon ECS bereit

Erstellt von Jean-Baptiste Guillois (AWS), Mathew George (AWS) und Thomas Scott (AWS)

Übersicht

Dieses Muster zeigt, wie Container in einem Amazon Elastic Container Service (Amazon ECS) -Cluster auf zwei Arten bereitgestellt werden können — mithilfe der Amazon Web Services (AWS) Management Console und mithilfe von AWS Copilot — um zu demonstrieren, wie AWS Copilot Bereitstellungsaufgaben vereinfacht.

Amazon ECS ist ein hoch skalierbarer, schneller Container-Management-Service, der es einfach macht, Container in einem Cluster auszuführen, zu stoppen und zu verwalten. Ihre Container sind in einer Aufgabendefinition definiert, die Sie zum Ausführen einzelner Aufgaben oder Aufgaben innerhalb eines Dienstes verwenden. Sie können Ihre Aufgaben und Services auf einer serverlosen Infrastruktur ausführen, die von AWS Fargate verwaltet wird. Für mehr Kontrolle über Ihre Infrastruktur können Sie Ihre Aufgaben und Dienste alternativ auf einem Cluster von Amazon Elastic Compute Cloud (Amazon EC2) -Instances ausführen, die Sie verwalten.

Die Befehle der Befehlszeilenschnittstelle (CLI) von AWS Copilot vereinfachen die Erstellung, Veröffentlichung und den Betrieb produktionsreifer containerisierter Anwendungen auf Amazon ECS von einer lokalen Entwicklungsumgebung aus. Die AWS Copilot CLI ist auf Entwickler-Workflows abgestimmt, die bewährte Methoden für moderne Anwendungen unterstützen: von der Verwendung von Infrastruktur als Code bis hin zur Erstellung einer Pipeline für kontinuierliche Integration und kontinuierliche Bereitstellung (CI/CD), die im Namen eines Benutzers bereitgestellt wird. Sie können die AWS Copilot CLI als Teil Ihres täglichen Entwicklungs- und Testzyklus als Alternative zur AWS-Managementkonsole verwenden.

Voraussetzungen und Einschränkungen

Voraussetzungen

Einschränkungen

  • Docker erzwingt im kostenlosen Tarif Pull-Limits von 100 Container-Images pro 6 Stunden pro IP-Adresse.

Architektur

Zieltechnologie-Stack

  • AWS-Umgebung, eingerichtet mit einer Virtual Private Cloud (VPC), öffentlichen und privaten Subnetzen und Sicherheitsgruppen

  • Amazon-ECS-Cluster

  • Amazon ECS-Service- und Aufgabendefinition

  • Amazon Elastic Container Registry (Amazon ECR)

  • Amazon-DynamoDB

  • Application Load Balancer

  • AWS Fargate

  • Amazon Identity and Access Management (IAM)

  • Amazon CloudWatch

  • AWS CloudTrail

Zielarchitektur

Wenn Sie die Beispielanwendung für dieses Muster bereitstellen, werden mehrere Aufgaben erstellt und in separaten Availability Zones bereitgestellt. Jede Aufgabe speichert Daten in Amazon DynamoDB. Wenn Sie auf die Webseite für eine Aufgabe zugreifen, können Sie die Daten aller anderen Aufgaben einsehen.

Architektur für die Bereitstellung von Containern mit AWS Copilot

Tools

AWS-Services

  • Amazon ECR Amazon Elastic Container Registry (Amazon ECR) ist ein von AWS verwalteter Container-Image-Registry-Service, der sicher, skalierbar und zuverlässig ist. Amazon ECR unterstützt private Container-Image-Repositories mit ressourcenbasierten Berechtigungen unter Verwendung von IAM.

  • Amazon ECS — Amazon Elastic Container Service (Amazon ECS) ist ein hoch skalierbarer, schneller Container-Management-Service zum Ausführen, Stoppen und Verwalten von Containern in einem Cluster. Sie können Ihre Aufgaben und Services auf einer serverlosen Infrastruktur ausführen, die von AWS Fargate verwaltet wird. Für mehr Kontrolle über Ihre Infrastruktur können Sie Ihre Aufgaben und Dienste alternativ auf einem Cluster von Amazon Elastic Compute Cloud (Amazon EC2) -Instances ausführen, die Sie verwalten.

  • AWS Copilot — AWS Copilot bietet eine Befehlszeilenschnittstelle, mit der Sie containerisierte Anwendungen auf AWS starten und verwalten können, einschließlich der Übertragung in eine Registrierung, der Erstellung einer Aufgabendefinition und der Erstellung eines Clusters.

  • AWS Fargate — AWS Fargate ist eine serverlose pay-as-you-go Rechen-Engine, mit der Sie sich auf die Erstellung von Anwendungen konzentrieren können, ohne Server verwalten zu müssen. AWS Fargate ist sowohl mit Amazon ECS als auch mit Amazon Elastic Kubernetes Service (Amazon EKS) kompatibel. Wenn Sie Ihre Amazon-ECS-Aufgaben und -Services mit dem Starttyp Fargate oder einem Fargate-Kapazitätsanbieter ausführen, packen Sie Ihre Anwendung in Container, spezifizieren die CPU- und Arbeitsspeicheranforderungen, definieren Netzwerk- und IAM-Richtlinien und starten die Anwendung. Jede Fargate-Aufgabe hat ihre eigene Isolationsgrenze und teilt den zugrunde liegenden Kernel, die CPU-Ressourcen, Speicherressourcen oder die elastic network interface nicht mit einer anderen Aufgabe.

  • Amazon DynamoDB — Amazon DynamoDB ist ein vollständig verwalteter NoSQL-Datenbankservice, der schnelle und vorhersehbare Leistung mit nahtloser Skalierbarkeit bietet.

  • Elastic Load Balancing (ELB) — Elastic Load Balancing verteilt Ihren eingehenden Traffic automatisch auf mehrere Ziele wie EC2 Instances, Container und IP-Adressen in einer oder mehreren Availability Zones. Es überwacht den Zustand der registrierten Ziele und leitet den Datenverkehr nur an die fehlerfreien Ziele weiter. Elastic Load Balancing skaliert Ihren Load Balancer, wenn sich der eingehende Datenverkehr im Laufe der Zeit ändert. Es kann automatisch auf die meisten Workloads skaliert werden.

Tools

Code

Der Code für die in diesem Muster verwendete Beispielanwendung ist im GitHub Cluster-Beispielanwendungs-Repository verfügbar. Folgen Sie den Anweisungen im nächsten Abschnitt, um die Beispieldateien zu verwenden.

Epen

AufgabeBeschreibungErforderliche Fähigkeiten
Klonen Sie das GitHub Repository.

Klonen Sie das Beispielcode-Repository mit dem folgenden Befehl:

git clone https://github.com/aws-samples/cluster-sample-app cluster-sample-app && cd cluster-sample-app
App-Entwickler, AWS DevOps
Erstellen Sie Ihr Amazon ECR-Repository.
  1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon ECR-Konsole unter https://console.aws.amazon.com/ecr/Repositorys.

  2. Wählen Sie Repository erstellen aus.

  3. Geben Sie als Repository-Namen ein. cluster-sample-app

  4. Behalten Sie für alle anderen Einstellungen die Standardwerte bei.

  5. Wählen Sie Repository erstellen aus.

Weitere Informationen finden Sie unter Erstellen eines privaten Repositorys in der Amazon ECR-Dokumentation.

App-Entwickler, AWS DevOps
Erstellen, taggen und übertragen Sie Ihr Docker-Image in Ihr Amazon ECR-Repository.
  1. Wählen Sie das Repository aus, das Sie gerade erstellt haben, und wählen Sie Push-Befehle anzeigen.

  2. Kopieren Sie die angezeigten Befehle und führen Sie sie lokal aus, um Ihr Docker-Image zu erstellen, zu taggen und zu pushen. Diese Befehle werden den folgenden ähneln.

So authentifizieren Sie Ihren Docker-Client bei der Registrierung:

aws ecr get-login-password --region <YOUR_AWS_REGION> | docker login --username AWS --password-stdin <YOUR_AWS_ACCOUNT>.dkr.ecr.<YOUR_AWS_REGION>.amazonaws.com

Um Ihr Docker-Image zu erstellen:

docker build -t cluster-sample-app .

Um Ihr Docker-Image zu taggen:

docker tag cluster-sample-app:latest <YOUR_AWS_ACCOUNT>.dkr.ecr.<YOUR_AWS_REGION>.amazonaws.com/cluster-sample-app:latest

Um das Docker-Image in Ihr Repository zu übertragen:

docker push <YOUR_AWS_ACCOUNT>.dkr.ecr.<YOUR_AWS_REGION>.amazonaws.com/cluster-sample-app:latest
App-Entwickler, AWS DevOps
Stellen Sie den Anwendungsstapel bereit.
  1. Öffnen Sie die CloudFormation AWS-Konsole unter https://console.aws.amazon.com/cloudformation/.

  2. Wählen Sie Stack erstellen aus.

  3. Wählen Sie im Abschnitt Vorlage vorbereiten die Option Vorlage ist bereit aus.

  4. Wählen Sie im Abschnitt Specify template (Vorlage angeben) die Option Upload a template file (Vorlagendatei hochladen) aus.

  5. Wählen Sie die lokale Dateicluster-sample-app-stack.yml, die Sie aus dem GitHub Repository geklont haben, als CloudFormation Vorlage aus, und klicken Sie dann auf Weiter.

  6. Geben Sie einen Namen für Ihren Stack ein und wählen Sie dann Weiter.

  7. Behalten Sie alle Standardoptionen bei und wählen Sie dann Weiter.

  8. Überprüfen Sie alle Optionen, bestätigen Sie die Erstellung von IAM-Ressourcen und wählen Sie dann Stack erstellen aus.

  9. Wenn Ihr Anwendungsstapel bereitgestellt wurde, wählen Sie die Registerkarte Ausgabe, kopieren Sie die URL und öffnen Sie sie in Ihrem Browser, um auf die Anwendung zuzugreifen.

Weitere Informationen zum Bereitstellen von CloudFormation Vorlagen finden Sie in der CloudFormation AWS-Dokumentation unter Erstellen eines Stacks.

AWS DevOps, App-Entwickler
AufgabeBeschreibungErforderliche Fähigkeiten
Klonen Sie das GitHub Repository.

Klonen Sie das Beispielcode-Repository mit dem folgenden Befehl:

git clone https://github.com/aws-samples/cluster-sample-app cluster-sample-app && cd cluster-sample-app
App-Entwickler, AWS DevOps
Stellen Sie Ihr Container-Image mithilfe der AWS Copilot CLI in AWS bereit.

Stellen Sie die Anwendung in einem Schritt bereit, indem Sie den folgenden Befehl im Stammverzeichnis Ihres Projekts verwenden:

copilot init --app cluster-sample-app --name demo --type "Load Balanced Web Service" --dockerfile ./Dockerfile --port 8080 --deploy

Sie sollten dann in der Lage sein, auf die Anwendung zuzugreifen, indem Sie den als Ausgabe angegebenen DNS-Namen verwenden.

App-Entwickler, AWS DevOps
AufgabeBeschreibungErforderliche Fähigkeiten
Löschen Sie die über die AWS-Managementkonsole erstellten Ressourcen.

Wenn Sie Option 1 (die AWS-Managementkonsole) zur Bereitstellung des Anwendungsstapels verwendet haben, gehen Sie wie folgt vor, wenn Sie bereit sind, die von Ihnen erstellten Ressourcen zu löschen:

  1. Öffnen Sie die CloudFormation Konsole unter https://console.aws.amazon.com/cloudformation/.

  2. Wählen Sie den Stapel aus, den Sie erstellt haben, und klicken Sie dann auf Löschen.

  3. Öffnen Sie die Amazon ECR-Konsole unter https://console.aws.amazon.com/ecr/Repositorys.

  4. Wählen Sie das von Ihnen erstellte Repository aus und klicken Sie dann auf Löschen.

App-Entwickler, AWS DevOps
Löschen Sie die von AWS Copilot erstellten Ressourcen.

Wenn Sie Option 2 (die AWS Copilot CLI) zur Bereitstellung des Anwendungsstapels verwendet haben, führen Sie den folgenden Befehl im Stammverzeichnis Ihres Projekts aus, wenn Sie bereit sind, die von Ihnen erstellten Ressourcen zu löschen:

copilot app delete
App-Entwickler, AWS DevOps

Zugehörige Ressourcen