ECS-kluster, uppgiftsdefinitioner och tjänster
Definiera ECS-uppgiftsdefinitioner med containeravbildningar och resursgränser, registrera dem i ett kluster och skapa en tjänst som upprätthåller önskat antal.
ECS-kluster, uppgiftsdefinitioner och tjänster är en gratis lektion i Cloud & IT Cert Prep på CoddyKit. Detta är lektion 1 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Cloud & IT Cert Prep, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Cloud & IT Cert Prep innehåller totalt 4 lektioner.
Varför använda containrar på AWS?
Containrar paketerar en applikation och alla dess beroenden i en portabel, isolerad enhet som körs konsekvent i olika miljöer. Amazon ECS (Elastic Container Service) är AWS:s helt hanterade tjänst för containerorkestrering, som kör Docker-containrar utan att ni behöver hantera ett control plane. ECS har djupa integrationer med AWS-tjänster (IAM, ALB, CloudWatch och Secrets Manager) och är det rekommenderade sättet att köra containrar på AWS utan Kubernetes-komplexitet.
ECS-kluster: grupperingsenheten
Ett ECS Cluster är en logisk gruppering av beräkningsresurser där era containrar körs. Ett kluster kan innehålla EC2-instanser (EC2 launch type), Fargate-kapacitet (Fargate launch type) eller båda. Ni kan ha flera tjänster och fristående tasks i ett kluster. Kluster är regionala men sträcker sig över flera Availability Zones. Ett vanligt mönster är ett kluster per miljö (dev/staging/prod) med flera tjänster i varje kluster för olika mikrotjänster.
aws ecs create-cluster \
--cluster-name 'MyAppCluster' \
--capacity-providers FARGATE FARGATE_SPOT \
--default-capacity-provider-strategy \
capacityProvider=FARGATE,weight=1,base=1Task definitions: ritningen
En Task Definition är ritningen för att köra containrar i ECS – jämförbar med en Docker Compose-fil. Den anger: container images (ECR-URI:er eller Docker Hub), tilldelningar av CPU och minne, port mappings, environment variables, logging configuration, volumes och IAM task role. En task definition är versionshanterad – varje revision är oföränderlig. Ni kan definiera flera containrar per task för sidecar-mönster (huvudapplikation + loggsändare + övervakningsagent).
{
'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 role kontra execution role
ECS-tasks använder två separata IAM-roller med olika syften. Task Execution Role används av ECS-agenten för att hämta container images från ECR, skicka loggar till CloudWatch och hämta secrets från Secrets Manager eller Parameter Store när tasken startas. Task Role används av programkoden som körs i containern för att anropa AWS-tjänster (S3, DynamoDB och SQS). Tilldela alltid minsta möjliga behörighet separat till varje roll – ge aldrig execution role behörigheter som applikationen inte behöver.
ECS-tjänster för långvariga arbetsbelastningar
En ECS Service upprätthåller ett angivet antal task-instanser som körs samtidigt (det desired count). Om en task misslyckas eller stoppas startar tjänstens schemaläggare automatiskt en ersättare. Tjänster integreras även med Elastic Load Balancing för trafikfördelning och stöder rolling deployments samt blue/green deployments. Använd en tjänst för alla långvariga processer (webbserver, API-server och bakgrundsarbetare). För engångsjobb ska ni i stället köra en fristående task.
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"
}
}'Nätverkslägen: awsvpc kontra bridge
Nätverksläget awsvpc ger varje ECS-task ett eget Elastic Network Interface (ENI) och en privat IP-adress i ert VPC – precis som en EC2-instans. Detta möjliggör detaljerad styrning av security groups per task och krävs för Fargate-tasks. Nätverksläget bridge använder Dockers inbyggda virtuella nätverk på värden, med portmappning från värd till container – det delar den värdbaserade EC2-instansens ENI. För SAA-C03-provet gäller att Fargate alltid använder awsvpc, medan EC2 launch type kan använda vilket som.
Ansluta en lastbalanserare till en ECS-tjänst
Registrera er ECS-tjänst med en ALB target group för att fördela trafik mellan task-instanser. När en ny task startar registrerar ECS den automatiskt i target group; när den stoppas avregistrerar ECS den. Konfigurera en health check grace period (till exempel 60–120 sekunder) så att containrarna hinner starta innan hälsokontrollerna körs. Utan en sådan respitperiod kan ALB markera en långsamt startande container som ej frisk innan den är redo, vilket orsakar ersättningsloopar.
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 kontra blue/green deployment
ECS-tjänster stöder två distributionsstrategier: Rolling Update ersätter gradvis gamla tasks med nya – konfigurerbart med minimumHealthyPercent (golv) och maximumPercent (tak). Inställningen 100/200 innebär att gamla tasks körs medan nya startas (100 % frisk kapacitet krävs, upp till 200 % kapacitet tillåts). En Blue/Green deployment (via AWS CodeDeploy) skapar en ny task set parallellt med den gamla, flyttar gradvis trafiken med viktad routning i ALB och avslutar gamla tasks efter validering. Blue/green har möjlighet till rollback utan driftstopp.
CloudWatch-loggning från ECS
Konfigurera loggdrivrutinen awslogs i er task definition för att skicka containerns stdout/stderr direkt till CloudWatch Logs. Ange en log group, region och stream prefix. Task execution role behöver behörigheterna logs:CreateLogStream och logs:PutLogEvents. För centraliserad loggaggregering från flera tjänster kan ni överväga FireLens (en sidecar-container med Fluent Bit eller Fluentd) för att dirigera loggar till S3, OpenSearch eller loggningssystem från tredje part.
'logConfiguration': {
'logDriver': 'awslogs',
'options': {
'awslogs-group': '/ecs/myapp',
'awslogs-region': 'us-east-1',
'awslogs-stream-prefix': 'myapp'
}
}ECS-tjänsteupptäckt med Cloud Map
När mikrotjänster i ECS behöver kommunicera med varandra fungerar hårdkodade IP-adresser inte, eftersom tasks är kortlivade och får nya IP-adresser vid varje start. Använd AWS Cloud Map (ECS Service Discovery) för att registrera varje tasks IP-adress och port i ett DNS-namespace. Andra tjänster slår upp myservice.namespace.local för att hitta de aktuella IP-adresserna till friska tasks. ECS registrerar automatiskt nya tasks och avregistrerar sådana som har misslyckats, så att DNS-posterna hålls korrekta utan manuell hantering.
Secrets i ECS task definitions
Hårdkoda aldrig autentiseringsuppgifter i task definitions. Referera i stället till secrets i Secrets Manager eller Parameter Store i er task definition – ECS injicerar dem som miljövariabler när tasken startar. Task execution role måste ha behörighet att hämta secrets. För Secrets Manager använder ni secretsmanager:GetSecretValue och för Parameter Store ssm:GetParameters. Secrets hämtas en gång när containern startar; rotering av secrets kräver att tasken ersätts för att de nya värdena ska hämtas.
'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'
}
]Snabbtest
Testa er förståelse av AWS Solutions Architect-koncepten (SAA-C03) från den här lektionen.
Sammanfattning av lektionen
I den här lektionen lärde ni er följande: ECS Clusters grupperar beräkningsresurser där tasks körs, Task Definitions definierar container images, CPU/minne, roller och loggning som versionshanterade ritningar, och ECS Services upprätthåller önskat antal tasks, integreras med ALB för trafikfördelning och stöder rolling eller blue/green deployments. Nästa ämne är en jämförelse mellan EC2 launch type och den serverlösa Fargate launch type.
Lär dig Cloud & IT Cert Prep med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 150
- Lektioner
- 600
Vanliga frågor
Är lektionen ”ECS-kluster, uppgiftsdefinitioner och tjänster” gratis?
Ja – hela texten till ”ECS-kluster, uppgiftsdefinitioner och tjänster” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Cloud & IT Cert Prep, kan Ni uppgradera till CoddyKit PRO. Kursen i Cloud & IT Cert Prep innehåller totalt 4 lektioner.
Vad lär jag mig i ”ECS-kluster, uppgiftsdefinitioner och tjänster”?
Definiera ECS-uppgiftsdefinitioner med containeravbildningar och resursgränser, registrera dem i ett kluster och skapa en tjänst som upprätthåller önskat antal. Ni övar på Cloud & IT Cert Prep med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Cloud & IT Cert Prep?
Du behöver inga förkunskaper. Utbildningen i Cloud & IT Cert Prep på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.
Hur lång tid tar lektionen ”ECS-kluster, uppgiftsdefinitioner och tjänster”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Cloud & IT Cert Prep-lektionen?
Ja. Varje Cloud & IT Cert Prep-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- ECS-kluster, uppgiftsdefinitioner och tjänster
- EC2-starttyp jämfört med Fargate
- ECR: Lagra och hämta containeravbildningar
- Automatisk skalning och lastbalansering av ECS-tjänster