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
Ein aktives AWS-Konto
AWS Command Line Interface (AWS CLI) lokal installiert und für die Verwendung Ihres AWS-Kontos konfiguriert (siehe Installationsanweisungen und Konfigurationsanweisungen in der AWS CLI-Dokumentation)
AWS Copilot lokal installiert (siehe Installationsanweisungen in der Amazon ECS-Dokumentation)
Docker auf Ihrem lokalen Computer installiert (siehe Docker-Dokumentation
)
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.
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
Polen
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Klonen Sie das GitHub Repository. | Klonen Sie das Beispiel-Code-Repository mit dem Befehl :
| App-Entwickler, AWS DevOps |
Erstellen Sie Ihr Amazon-ECR-Repository. |
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. |
So authentifizieren Sie Ihren Docker-Client bei der Registrierung:
So erstellen Sie Ihr Docker-Image:
So markieren Sie Ihr Docker-Image:
So pushen Sie das Docker-Image in Ihr Repository:
| App-Entwickler, AWS DevOps |
Stellen Sie den Anwendungs-Stack bereit. |
Weitere Informationen zum Bereitstellen von CloudFormation Vorlagen finden Sie unter Erstellen eines Stacks in der AWS- CloudFormation Dokumentation. | AWS DevOps, App-Entwickler |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Klonen Sie das GitHub Repository. | Klonen Sie das Beispiel-Code-Repository mit dem Befehl :
| 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:
Sie sollten dann in der Lage sein, mithilfe des als Ausgabe bereitgestellten DNS-Namens auf die Anwendung zuzugreifen. | App-Entwickler, AWS DevOps |
Aufgabe | Beschreibung | Erforderliche 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:
| 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:
| App-Entwickler, AWS DevOps |
Zugehörige Ressourcen
Installieren oder Aktualisieren der neuesten Version der AWS CLI (AWS CLI-Dokumentation)
Verwenden der AWS Copilot-Befehlszeilenschnittstelle (Amazon ECS-Dokumentation)
Amazon ECS auf AWS Fargate (Amazon ECR-Dokumentation)
Docker Desktop
(Docker-Dokumentation)