Bereitstellen einer geclusterten Anwendung in Amazon ECS mithilfe von AWS Copilot - 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.

Bereitstellen einer geclusterten Anwendung in Amazon ECS mithilfe von AWS Copilot

Erstellt von-Baptiste Guis (AWS), Mathew (AWS) und (AWS)

Code-Repository: Demo der geclusterten Beispielanwendung

Umgebung: Produktion

Technologien: Container und Microservices; Unternehmensproduktivität; Cloudnativ; Softwareentwicklung und -tests

AWS-Services: Amazon ECS; AWS Fargate; Amazon ECR

Übersicht

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

Amazon ECS ist ein hoch skalierbarer, schneller Container-Management-Service, der das Ausführen, Stoppen und Verwalten von Containern in einem Cluster vereinfacht. 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 Serverless-Infrastruktur ausführen, die von AWS Fargate verwaltet wird. Alternativ können Sie für mehr Kontrolle über Ihre Infrastruktur Ihre Aufgaben und Services auf einem Cluster von Amazon Elastic Compute Cloud (Amazon EC2)-Instances ausführen, die Sie verwalten.

Die AWS-Copilot-Befehle der Befehlszeilenschnittstelle (Command Line Interface, CLI) vereinfachen das Erstellen, Freigeben und Betreiben produktionsbereiter containerisierter Anwendungen auf Amazon ECS aus einer lokalen Entwicklungsumgebung. Die AWS-Copilot-CLI richtet sich an Entwicklerworkflows, die moderne bewährte Methoden für 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 Pull-Limits von 100 Container-Images pro 6 Stunden pro IP-Adresse im kostenlosen Plan.

Architektur

Zieltechnologie-Stack

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

  • 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 in separaten Availability Zones erstellt und bereitgestellt. Jede Aufgabe speichert Daten in Amazon DynamoDB . Wenn Sie auf die Webseite für eine Aufgabe zugreifen, können Sie die Daten von allen anderen Aufgaben anzeigen.

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 Serverless-Infrastruktur ausführen, die von AWS Fargate verwaltet wird. Alternativ können Sie für mehr Kontrolle über Ihre Infrastruktur Ihre Aufgaben und Services 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 in AWS starten und verwalten können, einschließlich des Pushs in eine Registrierung, der Erstellung einer Aufgabendefinition und der Erstellung eines Clusters.

  • AWS Fargate – AWS Fargate ist eine Serverless- pay-as-you-go Compute-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 verwendet den zugrunde liegenden Kernel, die CPU-Ressourcen, die Speicherressourcen oder die Elastic-Network-Schnittstelle nicht für eine andere Aufgabe.

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

  • Elastic Load Balancing (ELB) – Elastic Load Balancing verteilt Ihren eingehenden Datenverkehr automatisch auf mehrere Ziele, z. B. 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 auf GitHubim Cluster-Beispielanwendungs-Repository verfügbar. Folgen Sie den Anweisungen im nächsten Abschnitt, um die Beispieldateien zu verwenden.

Polen

AufgabeBeschreibungErforderliche Fähigkeiten
Klonen Sie das GitHub Repository.

Klonen Sie das Beispiel-Code-Repository mit dem 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/repositories.

  2. Wählen Sie Repository erstellen aus.

  3. Geben Sie für den Repository-Namen eincluster-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, markieren und pushen 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 aus.

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

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

So erstellen Sie Ihr Docker-Image:

docker build -t cluster-sample-app .

So markieren Sie Ihr Docker-Image:

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

So pushen Sie das Docker-Image in Ihr Repository:

docker push <YOUR_AWS_ACCOUNT>.dkr.ecr.<YOUR_AWS_REGION>.amazonaws.com/cluster-sample-app:latest
App-Entwickler, AWS DevOps
Stellen Sie den Anwendungs-Stack bereit.
  1. Öffnen Sie die AWS- CloudFormation 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 Datei auscluster-sample-app-stack.yml, die Sie aus dem GitHub Repository als CloudFormation Vorlage geklont haben, und wählen Sie dann Weiter aus.

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

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

  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 Anwendungs-Stack 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 unter Erstellen eines Stacks in der AWS- CloudFormation Dokumentation.

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

Klonen Sie das Beispiel-Code-Repository mit dem 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, mithilfe des als Ausgabe bereitgestellten DNS-Namens auf die Anwendung zuzugreifen.

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

Wenn Sie Option 1 (die AWS-Managementkonsole) verwendet haben, um den Anwendungs-Stack bereitzustellen, 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 Stack aus, den Sie erstellt haben, und wählen Sie dann Löschen aus.

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

  4. Wählen Sie das Repository aus, das Sie erstellt haben, und wählen Sie dann Löschen aus.

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

Wenn Sie Option 2 (die AWS-Copilot-CLI) verwendet haben, um den Anwendungs-Stack bereitzustellen, führen Sie den folgenden Befehl aus dem 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