Entwerfen Sie Ihre Lösung für Amazon ECS - Amazon Elastic Container Service

Entwerfen Sie Ihre Lösung für Amazon ECS

Sie müssen Ihre Anwendungen so entwerfen, dass sie auf Containern ausgeführt werden können. Ein Container ist eine standardisierte Einheit der Softwareentwicklung, die alles enthält, was Ihre Softwareanwendung zum Ausführen benötigt. Dies beinhaltet relevanten Code, Laufzeit, Systemtools und Systembibliotheken. Container werden anhand einer schreibgeschützten Vorlage erstellt, die als Image bezeichnet wird. Ein Container-Image ist ein statisches Artefakt, das Ihre Anwendung und ihre Abhängigkeiten enthält. Images werden normalerweise aus einer Dockerdatei erstellt. Eine Docker-Datei ist eine Klartextdatei, die Anweisungen zum Erstellen eines Containers enthält. Nach der Erstellung werden diese Images in einer Registrierung wie Amazon ECR gespeichert, von wo sie heruntergeladen werden können.

Nachdem Sie Ihr Image erstellt und gespeichert haben, erstellen Sie eine Amazon-ECS-Aufgabendefinition. Eine Aufgabendefinition ist eine Vorlage für Ihre Anwendung. Es handelt sich um eine Textdatei im JSON-Format, die die Parameter und einen oder mehrere Container beschreibt, die Ihre Anwendung bilden. So können Sie beispielsweise das Image und die Parameter für das Betriebssystem angeben, welche Container verwendet werden sollen, welche Ports für Ihre Anwendung geöffnet werden sollen und welche Daten-Volumes mit den Containern in der Aufgabe verwendet werden sollen. Welche spezifischen Parameter für Ihre Aufgabendefinition verfügbar sind, hängt von den Anforderungen Ihrer spezifischen Anwendung ab.

Nachdem Sie Ihre Aufgabendefinition definiert haben, stellen Sie sie entweder als Service oder als Aufgabe in Ihrem Cluster bereit. Ein Cluster ist eine logische Gruppierung von Aufgaben oder Services, die auf der Kapazitätsinfrastruktur ausgeführt wird, die auf einem Cluster registriert ist.

Eine Aufgabe ist die Instanziierung einer Aufgabendefinition auf einer Container-Instance in einem Cluster. Sie können eine eigenständige Aufgabe ausführen oder eine Aufgabe als Teil eines Services ausführen. Sie können einen Amazon-ECS-Service verwenden, um Ihre gewünschte Anzahl von Aufgaben gleichzeitig in einem Amazon-ECS-Cluster auszuführen und zu warten. Wenn eine Ihrer Aufgaben aus irgendeinem Grund fehlschlägt oder angehalten wird, launcht der Scheduler des Amazon-ECS-Service eine andere Instance entsprechend Ihrer Aufgabendefinition. Dies geschieht, um sie zu ersetzen und dadurch Ihre gewünschte Anzahl von Aufgaben im Service beizubehalten.

Der Container-Agent wird auf jeder Container-Instance in einem Amazon-ECS-Cluster ausgeführt. Der Agent sendet Informationen über die aktuell ausgeführten Aufgaben und die Ressourcenauslastung Ihrer Container an Amazon ECS. Er startet und stoppt Aufgaben auf entsprechende Aufforderung von Amazon ECS.

Nachdem Sie die Aufgabe oder den Service bereitgestellt haben, können Sie Ihre Bereitstellung und Anwendung mithilfe eines der folgenden Tools überwachen:

  • CloudWatch

  • Runtime Monitoring

Capacity (Kapazität)

Die Kapazität ist die Infrastruktur, in der Ihre Container ausgeführt werden. Amazon ECS bietet drei Infrastrukturtypen für Ihre Cluster.

  • Amazon ECS Managed Instances – AWS verwaltet die zugrunde liegenden Amazon-EC2-Instances, die in Ihrem Konto ausgeführt werden, vollständig, einschließlich Bereitstellung, Patching und Skalierung. Diese Option bietet das optimale Gleichgewicht zwischen Leistung, Kosteneffektivität und einfacher Bedienung.

  • Serverless (Fargate) – Zahlen Sie nur für die Ressourcen, die Ihre Aufgaben verbrauchen, ohne die Infrastruktur verwalten zu müssen. Ideal für variable Workloads und für einen schnellen Einstieg.

  • Amazon-EC2-Instances – Sie verwalten die zugrunde liegenden Amazon-EC2-Instances direkt, einschließlich Instance-Auswahl, Konfiguration und Wartung.

Verwenden Sie Amazon ECS Managed Instances, wenn:

  • Sie die Einfachheit von Fargate mit mehr Kontrolle über die zugrunde liegende Infrastruktur möchten.

  • Sie eine vorhersehbare Leistung und Kostenoptimierung benötigen.

  • Sie möchten, dass AWS die Verwaltung der Infrastruktur übernimmt, und gleichzeitig die Flexibilität wahren möchten.

Verwenden Sie Fargate, wenn:

  • Sie sich auf Ihre Anwendung konzentrieren möchten, ohne die Infrastruktur verwalten zu müssen.

  • Sie unberechenbare oder variable Workloads haben.

  • Sie gerade mit Containern beginnen und die einfachste Bereitstellungsoption möchten.

Verwenden Sie Amazon-EC2-Instances, wenn:

  • Sie spezielle Hardwareanforderungen (GPU-Beschleunigung, Hochleistungsdatenverarbeitung) benötigen.

  • Sie Kapazitätsreservierungen oder bestimmte Instance-Typen benötigen.

  • Sie privilegierte Funktionen oder benutzerdefinierte AMIs benötigen.

Sie die Infrastruktur angeben, wenn Sie einen Cluster erstellen. Sie auch den Infrastrukturtyp angeben, wenn Sie eine Aufgabendefinition anmelden. In der Aufgabendefinition wird die Infrastruktur als „Starttyp“ bezeichnet. Sie können auch Kapazitätsanbieter verwenden.

Service-Endpunkte

Der Service-Endpunkt ist die URL des Einstiegspunkts für Amazon ECS, mit dem Sie programmgesteuert eine Verbindung zum Service herstellen, indem Sie entweder Internet Protocol Version 4 (IPv4) oder Internet Protocol Version 6 (IPv6) verwenden. Anfragen, um programmgesteuert eine Verbindung zu Amazon ECS herzustellen, verwnden standardmäßig Service-Endpunkte, die nur IPv4-Anfragen unterstützen. Um eine programmgesteuerte Verbindung mit Amazon ECS über IPv4- oder IPv6-Anfragen herzustellen, können Sie einen Dual-Stack-Endpunkt verwenden. Weitere Informationen zur Verwendung von Dual-Stack-Endpunkten finden Sie unter Verwenden von Dual-Stack-Endpunkten in Amazon ECS.

Netzwerk

AWS-Ressourcen werden in Subnetzen erstellt. Wenn Sie EC2-Instances verwenden, startet Amazon ECS die Instances in dem Subnetz, das Sie bei der Erstellung eines Clusters angeben. Ihre Aufgaben werden im Instance-Subnetz ausgeführt. Bei virtuellen Fargate- oder On-Premises-Maschinen geben Sie das Subnetz an, wenn Sie eine Aufgabe ausführen oder einen Service erstellen.

Je nach Ihrer Anwendung kann es sich bei dem Subnetz um ein privates oder öffentliches Subnetz handeln, und das Subnetz kann sich in einer der folgenden AWS-Ressourcen befinden:

  • Availability Zones

  • Lokale Zonen

  • Wavelength-Zonen

  • AWS-Regionen

  • AWS Outposts

Weitere Informationen finden Sie unter Amazon-ECS-Anwendungen in gemeinsam genutzten Subnetzen, Local Zones und Wavelength-Zonen oder Amazon Elastic Container Service auf AWS Outposts.

Sie können Ihre Anwendung mit dem Internet verbinden, indem Sie eine der folgenden Methoden verwenden:

  • Ein öffentliches Subnetz mit einem Internet-Gateway

    Verwenden Sie öffentliche Subnetze, wenn Sie öffentliche Anwendungen haben, die viel Bandbreite oder minimale Latenz benötigen. Zu den anwendbaren Szenarien gehören Videostreaming- und Spieleservices.

  • Ein privates Subnetz mit einem NAT-Gateway.

    Verwenden Sie private Subnetze, wenn Sie Ihre Container vor direktem externen Zugriff schützen möchten. Zu den anwendbaren Szenarien gehören Zahlungsabwicklungssysteme oder Container, in denen Benutzerdaten und Passwörter gespeichert werden.

  • AWS PrivateLink

    Verwenden Sie AWS PrivateLink, um private Verbindungen zwischen VPCs, AWS-Services und Ihren On-Premises-Netzwerken herzustellen, ohne dass Ihr Datenverkehr dem öffentlichen Internet ausgesetzt wird.

Zugriff auf Features

Sie können Ihre Amazon-ECS-Kontoeinstellungen verwenden, um auf die folgenden Features zuzugreifen:

  • Container Insights

    CloudWatch Container Insights sammelt, aggregiert und fasst Metriken und Protokolle von Ihren containerisierten Anwendungen und Microservices zusammen. Die Metriken umfassen die Auslastung für Ressourcen wie z  B. CPU, Arbeitsspeicher, Datenträger und Netzwerk.

  • awsvpc-Trunking

    Für bestimmte EC2-Instance-Typen können zusätzliche Netzwerkschnittstellen (ENIs) auf neu gestarteten Container-Instances verfügbar sein.

  • Tagging-Autorisierung

    Benutzer müssen über Berechtigungen für Aktionen verfügen, die eine Ressource erstellen, wie z. B. ecsCreateCluster. Wenn in der ressourcenerstellenden Aktion Tags angegeben sind, führt AWS eine zusätzliche Autorisierung für die ecs:TagResource-Aktion durch, um zu überprüfen, ob Benutzer oder Rollen die Berechtigung haben, Tags zu erstellen.

  • FIPS-140-Compliance von Fargate

    Fargate unterstützt den Bundesstandard für Informationsprozesse (FIPS-140), der die Sicherheitsanforderungen für Verschlüsselungsmodule zum Schutz sensibler Daten festlegt. Es ist der aktuelle Standard der amerikanischen und kanadischen Regierung und gilt für Systeme, die mit dem Federal Information Security Management Act (FISMA) oder dem Federal Risk and Authorization Management Program (FedRAMP) konform sein müssen.

  • Änderungen der Zeit zur Außerbetriebnahme von Fargate-Aufgaben

    Sie können die Wartezeit konfigurieren, bis Aufgaben für das Patchen außer Betrieb genommen werden.

  • Dual-Stack-VPC

    Erlaubt Aufgaben die Kommunikation über IPv4, IPv6 oder beides.

  • Format des Amazon-Ressourcennamens (ARN)

    Bestimmte Features, wie die Markierungs-Autorisierung, erfordern ein neues Amazon-Ressourcenname (ARN)-Format.

Weitere Informationen finden Sie unter Zugriff auf Amazon-ECS-Features über die Kontoeinstellungen.

IAM roles

Eine IAM-Rolle ist eine IAM-Identität, die Sie in Ihrem Konto mit bestimmten Berechtigungen erstellen können. In Amazon ECS können Sie Rollen erstellen, um Berechtigungen für Amazon-ECS-Ressourcen wie Container oder Services zu erteilen.

Für einige Amazon-ECS-Features sind Rollen erforderlich. Weitere Informationen finden Sie unter IAM-Rollen für Amazon ECS.

Protokollierung

Die Protokollierung und die Überwachung sind wichtige Aspekte, um die Zuverlässigkeit, Verfügbarkeit und Leistung von Amazon-ECS-Workloads aufrechtzuerhalten. Verfügbar sind die nachfolgend aufgeführten Optionen:

  • Amazon CloudWatch-Protokolle – Protokolle an Amazon CloudWatch weiterleiten

  • FireLens für Amazon ECS – Protokolle zur Speicherung und Analyse an einen AWS-Service oder ein AWS Partner Network-Ziel weiterleiten. AWS Partner Network ist eine globale Partnergemeinschaft, die Programme, Fachwissen und Ressourcen nutzt, um Kundenangebote aufzubauen, zu vermarkten und zu verkaufen.

Bewährte Methoden für Container-Images

Im Folgenden sind die wichtigsten Prinzipien für Amazon-ECS-Container-Images aufgeführt:

  • Alle Abhängigkeiten in das Image einbeziehen

  • Einen Prozess pro Container ausführen

  • SIGTERM für reibungslose Abschaltungen erkennen

  • Protokolle in stdout und stderr schreiben

  • Eindeutige Tags verwenden, latest in der Produktion vermeiden