ECS-Cluster, Task-Definitionen und Services
Definieren Sie ECS-Task-Definitionen mit Container-Images und Ressourcenlimits, registrieren Sie sie in einem Cluster und erstellen Sie einen Service, der die gewünschte Anzahl aufrechterhält.
ECS-Cluster, Task-Definitionen und Services ist eine kostenlose Cloud & IT Cert Prep-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Cloud & IT Cert Prep-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Cloud & IT Cert Prep-Kurs umfasst insgesamt 4 Lektionen.
Warum Container auf AWS?
Container bündeln eine Anwendung und alle ihre Abhängigkeiten in einer portablen, isolierten Einheit, die in verschiedenen Umgebungen konsistent ausgeführt wird. Amazon ECS (Elastic Container Service) ist der vollständig verwaltete Container-Orchestrierungsservice von AWS, der Docker-Container ausführt, ohne dass Sie eine Control Plane verwalten müssen. ECS lässt sich eng in AWS-Services (IAM, ALB, CloudWatch, Secrets Manager) integrieren und ist die empfohlene Möglichkeit, Container auf AWS ohne die Komplexität von Kubernetes auszuführen.
ECS-Cluster: Die Gruppierungseinheit
Ein ECS Cluster ist eine logische Gruppierung von Rechenressourcen, auf denen Ihre Container ausgeführt werden. Ein Cluster kann EC2-Instanzen (EC2-Launch-Typ), Fargate-Kapazität (Fargate-Launch-Typ) oder beides enthalten. In einem Cluster können sich mehrere Services und eigenständige Tasks befinden. Cluster sind regional, erstrecken sich jedoch über mehrere Availability Zones. Ein gängiges Muster ist ein Cluster pro Umgebung (Dev/Staging/Prod) mit mehreren Services innerhalb jedes Clusters für verschiedene Microservices.
aws ecs create-cluster \
--cluster-name 'MyAppCluster' \
--capacity-providers FARGATE FARGATE_SPOT \
--default-capacity-provider-strategy \
capacityProvider=FARGATE,weight=1,base=1Task-Definitionen: Der Bauplan
Eine Task Definition ist der Bauplan zum Ausführen von Containern in ECS – vergleichbar mit einer Docker-Compose-Datei. Sie legt Folgendes fest: container images (ECR-URIs oder Docker Hub), CPU and memory-Zuweisungen, port mappings, environment variables, logging configuration, volumes und die IAM task role. Eine Task-Definition ist versioniert – jede Revision ist unveränderlich. Sie können mehrere Container pro Task für Sidecar-Muster definieren (Hauptanwendung + Log-Weiterleitung + Monitoring-Agent).
{
'family': 'myapp-task',
'networkMode': 'awsvpc',
'requiresCompatibilities': ['FARGATE'],
'cpu': '512',
'memory': '1024',
'executionRoleArn': 'arn:aws:iam::123456789012:role/ecsTaskExecutionRole',
'taskRoleArn': 'arn:aws:iam::123456789012:role/myAppTaskRole',
'containerDefinitions': [{
'name': 'myapp',
'image': '123456789012.dkr.ecr.us-east-1.amazonaws.com/myapp:latest',
'portMappings': [{'containerPort': 8080}]
}]
}Task-Rolle und Execution-Rolle
ECS-Tasks verwenden zwei separate IAM-Rollen mit unterschiedlichen Aufgaben. Die Task Execution Role wird vom ECS-Agent verwendet, um Container-Images aus ECR abzurufen, Logs an CloudWatch zu senden und beim Start des Tasks Secrets aus Secrets Manager oder Parameter Store abzurufen. Die Task Role wird vom Anwendungscode im Container verwendet, um AWS-Services aufzurufen (S3, DynamoDB, SQS). Weisen Sie jeder Rolle stets separat Berechtigungen nach dem Prinzip der geringsten Rechte zu – geben Sie der Execution-Rolle niemals Berechtigungen, die die Anwendung nicht benötigt.
ECS-Services für langlebige Workloads
Ein ECS Service hält eine festgelegte Anzahl gleichzeitig ausgeführter Task-Instanzen aufrecht (die desired count). Wenn ein Task fehlschlägt oder beendet wird, startet der Service-Scheduler automatisch einen Ersatz. Services lassen sich außerdem in Elastic Load Balancing integrieren, um Datenverkehr zu verteilen, und unterstützen Rolling Deployments sowie Blue/Green-Deployments. Verwenden Sie einen Service für jeden langlebigen Prozess (Webserver, API-Server, Hintergrund-Worker). Für einmalige Jobs führen Sie stattdessen einen eigenständigen Task aus.
aws ecs create-service \
--cluster 'MyAppCluster' \
--service-name 'MyAppService' \
--task-definition 'myapp-task:5' \
--desired-count 3 \
--launch-type FARGATE \
--network-configuration '{
"awsvpcConfiguration": {
"subnets": ["subnet-aaa111", "subnet-bbb222"],
"securityGroups": ["sg-xyz"],
"assignPublicIp": "DISABLED"
}
}'Netzwerkmodi: awsvpc und bridge
Der Netzwerkmodus awsvpc gibt jedem ECS-Task eine eigene Elastic Network Interface (ENI) und private IP-Adresse innerhalb Ihrer VPC – genau wie bei einer EC2-Instanz. Dadurch ist eine detaillierte Steuerung der Security Groups pro Task möglich; außerdem ist dieser Modus für Fargate-Tasks erforderlich. Der Netzwerkmodus bridge verwendet das integrierte virtuelle Docker-Netzwerk auf dem Host und bildet Ports vom Host auf den Container ab – dabei wird die ENI der Host-EC2-Instanz gemeinsam genutzt. Für die SAA-C03-Prüfung gilt: Fargate verwendet immer awsvpc; der EC2-Launch-Typ kann beide Modi verwenden.
Einen Load Balancer an einen ECS-Service anbinden
Registrieren Sie Ihren ECS-Service in einer ALB target group, um Datenverkehr auf die Task-Instanzen zu verteilen. Wenn ein neuer Task startet, registriert ECS ihn automatisch in der Zielgruppe; wenn er beendet wird, hebt ECS seine Registrierung auf. Konfigurieren Sie eine health check grace period (z. B. 60–120 Sekunden), damit die Container ausreichend Zeit zum Starten haben, bevor die Health Checks beginnen. Ohne Karenzzeit kann der ALB einen langsam startenden Container als fehlerhaft markieren, bevor er bereit ist, und dadurch wiederholte Ersetzungszyklen auslösen.
aws ecs create-service \
--cluster 'MyAppCluster' \
--service-name 'MyAppService' \
--load-balancers \
'targetGroupArn=arn:aws:elasticloadbalancing:...,containerName=myapp,containerPort=8080' \
--health-check-grace-period-seconds 120 \
--task-definition 'myapp-task:5' \
--desired-count 3Rolling Deployment und Blue/Green-Deployment
ECS-Services unterstützen zwei Deployment-Strategien: Rolling Update ersetzt alte Tasks schrittweise durch neue – konfigurierbar mit minimumHealthyPercent (Untergrenze) und maximumPercent (Obergrenze). Die Einstellung 100/200 bedeutet, dass alte Tasks weiterlaufen, während neue gestartet werden (100 % müssen fehlerfrei sein, bis zu 200 % Kapazität). Ein Blue/Green deployment (über AWS CodeDeploy) erstellt neben dem alten einen neuen Task-Satz, verschiebt den Datenverkehr mithilfe einer gewichteten ALB-Routenverteilung schrittweise und beendet die alten Tasks nach der Validierung. Blue/Green ermöglicht ein Rollback ohne Ausfallzeit.
CloudWatch-Logging aus ECS
Konfigurieren Sie den awslogs-Log-Treiber in Ihrer Task-Definition, um die Standardausgabe und die Standardfehlerausgabe des Containers direkt an CloudWatch Logs zu senden. Geben Sie eine Log-Gruppe, eine Region und ein Stream-Präfix an. Die Task-Execution-Rolle benötigt die Berechtigungen logs:CreateLogStream und logs:PutLogEvents. Für eine zentrale Log-Aggregation über mehrere Services hinweg können Sie FireLens verwenden (einen Sidecar-Container mit Fluent Bit oder Fluentd), um Logs an S3, OpenSearch oder Logging-Systeme von Drittanbietern weiterzuleiten.
'logConfiguration': {
'logDriver': 'awslogs',
'options': {
'awslogs-group': '/ecs/myapp',
'awslogs-region': 'us-east-1',
'awslogs-stream-prefix': 'myapp'
}
}ECS-Serviceerkennung mit Cloud Map
Wenn Microservices in ECS miteinander kommunizieren müssen, funktionieren fest codierte IP-Adressen nicht, da Tasks vergänglich sind und bei jedem Start neue IPs erhalten. Verwenden Sie AWS Cloud Map (ECS Service Discovery), um die IP-Adresse und den Port jedes Tasks in einem DNS-Namespace zu registrieren. Andere Services lösen myservice.namespace.local in die aktuellen IP-Adressen der fehlerfreien Tasks auf. ECS registriert neue Tasks automatisch und hebt die Registrierung fehlerhafter Tasks auf, sodass die DNS-Einträge ohne manuelle Verwaltung korrekt bleiben.
Secrets in ECS-Task-Definitionen
Speichern Sie Anmeldedaten niemals fest in Task-Definitionen. Verweisen Sie stattdessen in Ihrer Task-Definition auf Secrets aus Secrets Manager oder Parameter Store – ECS injiziert sie beim Start des Tasks als Umgebungsvariablen. Die Task-Execution-Rolle muss über Berechtigungen zum Abrufen der Secrets verfügen. Verwenden Sie für Secrets Manager secretsmanager:GetSecretValue und für Parameter Store ssm:GetParameters. Secrets werden einmal beim Start des Containers abgerufen. Für die Übernahme rotierter Secrets muss der Task ersetzt werden.
'secrets': [
{
'name': 'DB_PASSWORD',
'valueFrom': 'arn:aws:secretsmanager:us-east-1:123456789012:secret:myapp/db-password-AbCdEf'
},
{
'name': 'API_KEY',
'valueFrom': 'arn:aws:ssm:us-east-1:123456789012:parameter/myapp/api-key'
}
]Kurztest
Testen Sie Ihr Verständnis der AWS-Solutions-Architect-Konzepte (SAA-C03) aus dieser Lektion.
Zusammenfassung der Lektion
In dieser Lektion haben Sie gelernt: ECS Clusters gruppieren die Rechenressourcen, auf denen Tasks ausgeführt werden. Task Definitions definieren Container-Images, CPU/Speicher, Rollen und Logging als versionierte Baupläne. ECS Services halten die gewünschte Task-Anzahl aufrecht, integrieren ALB zur Datenverkehrsverteilung und unterstützen Rolling- oder Blue/Green-Deployments. Als Nächstes vergleichen wir den EC2-Launch-Typ mit dem serverlosen Fargate-Launch-Typ.
Häufig gestellte Fragen
Ist die Lektion „ECS-Cluster, Task-Definitionen und Services“ kostenlos?
Ja — der vollständige Text von „ECS-Cluster, Task-Definitionen und Services“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Cloud & IT Cert Prep-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Cloud & IT Cert Prep-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „ECS-Cluster, Task-Definitionen und Services“?
Definieren Sie ECS-Task-Definitionen mit Container-Images und Ressourcenlimits, registrieren Sie sie in einem Cluster und erstellen Sie einen Service, der die gewünschte Anzahl aufrechterhält. Du übst Cloud & IT Cert Prep mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Cloud & IT Cert Prep zu starten?
Keine Vorkenntnisse erforderlich. Cloud & IT Cert Prep auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „ECS-Cluster, Task-Definitionen und Services“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Cloud & IT Cert Prep-Lektion Code schreiben und ausführen?
Ja. Jede Cloud & IT Cert Prep-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- ECS-Cluster, Task-Definitionen und Services
- EC2-Starttyp im Vergleich zu Fargate
- ECR: Container-Images speichern und abrufen
- Automatische ECS-Service-Skalierung und Load Balancing