43 AWS ECS mit Console
Zielsetzung
Sie erstellen einen Amazon Elastic Container Service Cluster, erstellen eine Task Definition sowie einen Service, um Ihre Container im Internet bereitzustellen.
Konzept
Amazon Elastic Container Service (ECS) ist vergleichbar mit Kubernetes, Docker Swarm, oder Azure Container Service. ECS unterstützt zwei unterschiedliche Betriebsmodelle:
- Fargate: Diese Option ist serverless - Sie können Container betreiben, ohne dass Sie Ihre Infrastruktur verwalten müssen. Geeignet für kleine Applikationen, Applikationen mit kurzzeitig hohen Lasten oder schnell wechselnden Lasten.
- EC2: Sie konfigurieren EC2-Instanzen (Virtuelle Machinen) in Ihrem Cluster und stellen diese bereit, um Ihre Container auszuführen. Geeignet für Applikationen mit konstant hoher CPU und Speichernutzung, Preisoptimierung oder Applikationen mit hohem Speicherbedarf.
Info
Für diesen Auftrag verwenden wir den serverless Ansatz mit Fargate. AWS ECS übernimmt hier die Installation von Containern, die Skalierung, die Überwachung und die Verwaltung sowohl über eine API als auch über die AWS Management Console. Die spezifische Maschine, auf der ein Container läuft, und die Wartung aller Instanzen werden von der Plattform übernommen. Wir müssen uns nicht darum kümmern. Dieser Service kostet - die Frage stellt sich, ob AWS ihn teurer oder günstiger als wir anbieten kann.
Task Definition
Die Task Definition (Aufgabenbeschreibung) ist eine Vorlage, die beschreibt, welche Docker-Container ausgeführt werden sollen. In unserem Beispiel ist dies der nginx-custom Container. Die Task Definition beschreibt die zu verwendenden Images, die nötige CPU Rechenleistung, Speicher, die Umgebungsvariablen, die freizugebenden Ports und die Interaktion der Container.
Task
Aus einer Task Definition können Instanzen gestartet werden, welche die Container gemäss dieser Konfiguration beinhaltet. Aus einer Task Definition können beliebig viele identische Tasks (Aufgaben) erstellt werden.
Service
Der Service definiert die minimale und maximale Anzahl von Tasks einer Task Definition, die zu einem bestimmten Zeitpunkt ausgeführt werden, sowie die automatische Skalierung und das Loadbalancing.
Falls die CPU durch den einzigen laufenden Task ausgelastet ist, kann der Service automatisch zusätzliche Tasks hinzufügen. Es erlaubt zudem die maximale Anzahl der Tasks zu begrenzen, die ausgeführt werden können. Dies hilft, die Kosten von AWS unter Kontrolle zu halten.
Cluster
Der Service muss seine Tasks nun irgendwo ausführen können, damit sie zugänglich sind. Er muss einem Cluster zugeordnet werden und der Containerverwaltungsdienst sorgt selbstständig dafür, dass er genügend ECS-Instanzen für Ihren Cluster bereitstellt.
Umsetzung
-
In der AWS Management Console, suchen Sie den Service Elastic Container Service

-
Erstellen Sie unter Cluster mit Create cluster einen neuen Cluster. Verwenden Sie als Cluster name
fargate-cluster
Regionsbeschränkungen Learner Lab
Alle Services im AWS Academy Learner Lab sind auf die Regionen
us-east-1undus-west-2beschränkt. Verwenden Sie nur diese Regionen.There was an error while retrieving a list of namespaces
Amazon hat die Funktionalität
Namespaceseingeführt. Das Learner Lab hat diese Neuerungen noch nicht in ihr Rechtemodell eingebaut, weshalb wir die benötigtenListNamespaces-Rechte noch nicht besitzen. Für unseren ECS Cluster verwenden wir *keine Namespaces - Sie können den Fehler deshalb ignorieren. -
Wählen Sie links im Menü Task definitions und erstellen Sie eine neue Task Definition mittels Create new task definition. Verwenden Sie
nginx-customals Cluster name und als Image URI Ihre persönliche URL zum privaten Repository aus dem Abschnitt Elastic Container Registry (Beispiel:12345EXAMPLE.dkr.ecr.us-east-1.amazonaws.com/nginx-custom:latest)
-
Nachdem Sie mittels
Nextzum Teil Configure environment, storage, monitoring, and tags gelangt sind, stellen Sie sicher, dass Sie unter EnvironmentAWS Fargate (serverless)verwenden, setzen Sie CPU auf.25 vCPUund Memory auf.5 GB.
LabRole
Task role und Task execution role müssen zwingendermassen auf
LabRolegestellt werden, Sie erhalten sonst Fehlermeldungen und der Cluster kann nicht erstellt werden. -
Wählen Sie links im Menü Cluster und erstellen Sie einen neuen Service.

-
Als Compute options wählen Sie
Launch typeund belassen die restlichen Voreinstellungen.
-
Application type muss ein
Servicesein. Bei Task definition wählen Sie unter Family die zuvor erstellte Task definitionnginx-custommit Revisionlatest. Desired tasks ist in unserem Fall1.
-
Erstellen Sie eine neue Security Group mit dem Namen
fargate-serviceund einer Beschreibung. Erlauben Sie TypeHTTPund SourceAnywhere.
Optional
Alternativ können Sie auch die Default Security Group verwenden. Erstellen Sie anschliessend im VPC Dashboard die nötige zusätzliche Inbound Rule.
-
Erstellen Sie den Service nun mittels
Createund warten bis der Service deployed wurde. Sie finden Ihre Public-IP-Adresse, indem Sie den Servicefargate-servicewählen, in den Tab Configuration and tasks wechseln und dort den Task auswählen. Im Bereich Configuration wird Ihre Public-IP-Adresse angezeigt. Testen Sie, ob der Container läuft.
Zusammenfassung
Sie haben auf einer öffentlichen IP eine Instanz Ihres nginx-custom Images bereitgestellt. Dazu haben Sie in AWS einen Elastic Container Service Cluster, die Task Definition und einen Service erstellt.