Cluster ECS, definizioni dei task e servizi
Definire le definizioni delle attività ECS con immagini dei container e limiti di risorse, registrarle in un cluster e creare un servizio che mantenga il numero desiderato
Cluster ECS, definizioni dei task e servizi è una lezione AWS Solutions Architect gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento AWS Solutions Architect, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso AWS Solutions Architect include 4 lezioni in totale.
Perché utilizzare i container su AWS
I container raccolgono un'applicazione e tutte le sue dipendenze in un'unità portabile e isolata, che viene eseguita in modo coerente nei diversi ambienti. Amazon ECS (Elastic Container Service) è il servizio AWS completamente gestito di orchestrazione dei container, che esegue container Docker senza richiedere la gestione di un control plane. ECS si integra profondamente con i servizi AWS (IAM, ALB, CloudWatch, Secrets Manager) ed è il metodo consigliato per eseguire container su AWS senza la complessità di Kubernetes.
Cluster ECS: l'unità di raggruppamento
Un cluster ECS è un raggruppamento logico delle risorse di calcolo in cui vengono eseguiti i container. Un cluster può contenere istanze EC2 (tipo di avvio EC2), capacità Fargate (tipo di avvio Fargate) oppure entrambe. In un cluster è possibile avere più servizi e attività autonome. I cluster sono regionali, ma si estendono su più Availability Zone. Un modello comune consiste nell'utilizzare un cluster per ambiente (sviluppo, staging e produzione), con più servizi all'interno di ciascun cluster per i diversi microservizi.
aws ecs create-cluster \
--cluster-name 'MyAppCluster' \
--capacity-providers FARGATE FARGATE_SPOT \
--default-capacity-provider-strategy \
capacityProvider=FARGATE,weight=1,base=1Definizioni delle attività: il modello
Una definizione di attività è il modello per eseguire container in ECS, analogo a un file Docker Compose. Specifica: immagini dei container (URI ECR o Docker Hub), allocazioni di CPU e memoria, mappature delle porte, variabili d'ambiente, configurazione della registrazione, volumi e ruolo IAM dell'attività. Una definizione di attività è sottoposta a versionamento: ogni revisione è immutabile. È possibile definire più container per attività, secondo il modello sidecar (applicazione principale + inoltro dei log + agente di monitoraggio).
{
'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}]
}]
}Ruolo dell'attività e ruolo di esecuzione a confronto
Le attività ECS utilizzano due ruoli IAM separati, con finalità distinte. Il ruolo di esecuzione dell'attività viene utilizzato dall'agente ECS per estrarre le immagini dei container da ECR, inviare i log a CloudWatch e recuperare i segreti da Secrets Manager o Parameter Store durante l'avvio dell'attività. Il ruolo dell'attività viene utilizzato dal codice dell'applicazione in esecuzione all'interno del container per chiamare i servizi AWS (S3, DynamoDB, SQS). Assegni sempre autorizzazioni con il principio del privilegio minimo a ciascun ruolo separatamente: non conceda mai al ruolo di esecuzione autorizzazioni che non servono all'applicazione.
Servizi ECS per carichi di lavoro a esecuzione prolungata
Un servizio ECS mantiene un numero specificato di istanze di attività in esecuzione contemporaneamente (il conteggio desiderato). Se un'attività ha esito negativo o si arresta, lo scheduler del servizio avvia automaticamente una sostituzione. I servizi si integrano inoltre con Elastic Load Balancing per distribuire il traffico e supportano distribuzioni rolling e blue/green. Utilizzi un servizio per qualsiasi processo a esecuzione prolungata (server web, server API o worker in background). Per i processi eseguiti una sola volta, utilizzi invece un'attività autonoma.
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"
}
}'Modalità di rete: awsvpc e bridge
La modalità di rete awsvpc assegna a ogni attività ECS una propria Elastic Network Interface (ENI) e un indirizzo IP privato all'interno del VPC, proprio come un'istanza EC2. Ciò consente di controllare in modo dettagliato i security group per ogni attività ed è obbligatorio per le attività Fargate. La modalità di rete bridge utilizza la rete virtuale integrata di Docker sull'host, con la mappatura delle porte dall'host al container; condivide l'ENI dell'istanza EC2 host. Per l'esame SAA-C03, Fargate utilizza sempre awsvpc; il tipo di avvio EC2 può utilizzare entrambe le modalità.
Collegamento di un load balancer a un servizio ECS
Registri il servizio ECS in un gruppo target ALB per distribuire il traffico tra le istanze delle attività. Quando viene avviata una nuova attività, ECS la registra automaticamente nel gruppo target; quando si arresta, ECS la rimuove dalla registrazione. Configuri un periodo di tolleranza per i controlli dello stato (ad esempio 60-120 secondi) per consentire ai container di avviarsi prima dell'esecuzione dei controlli. Senza un periodo di tolleranza, l'ALB potrebbe contrassegnare come non integro un container ad avvio lento prima che sia pronto, causando cicli di sostituzione.
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 3Distribuzione rolling e distribuzione blue/green a confronto
I servizi ECS supportano due strategie di distribuzione: l'aggiornamento rolling sostituisce gradualmente le attività precedenti con quelle nuove, configurando minimumHealthyPercent (limite inferiore) e maximumPercent (limite superiore). L'impostazione 100/200 significa che le attività precedenti restano in esecuzione mentre vengono avviate quelle nuove (è richiesto il 100% di integrità, con una capacità fino al 200%). La distribuzione blue/green (tramite AWS CodeDeploy) crea un nuovo set di attività affiancato a quello precedente, sposta gradualmente il traffico utilizzando il routing ponderato di ALB e termina le attività precedenti dopo la convalida. La strategia blue/green consente il rollback senza interruzioni.
Registrazione CloudWatch da ECS
Configuri il driver di log awslogs nella definizione dell'attività per inviare direttamente stdout/stderr del container a CloudWatch Logs. Specifichi un gruppo di log, una regione e un prefisso del flusso. Il ruolo di esecuzione dell'attività deve disporre delle autorizzazioni logs:CreateLogStream e logs:PutLogEvents. Per aggregare centralmente i log di più servizi, valuti l'utilizzo di FireLens (un container sidecar con Fluent Bit o Fluentd) per inoltrare i log a S3, OpenSearch o sistemi di registrazione di terze parti.
'logConfiguration': {
'logDriver': 'awslogs',
'options': {
'awslogs-group': '/ecs/myapp',
'awslogs-region': 'us-east-1',
'awslogs-stream-prefix': 'myapp'
}
}Individuazione dei servizi ECS con Cloud Map
Quando i microservizi in ECS devono comunicare tra loro, gli indirizzi IP codificati direttamente nel codice non funzionano, perché le attività sono effimere e ricevono nuovi IP a ogni avvio. Utilizzi AWS Cloud Map (individuazione dei servizi ECS) per registrare l'IP e la porta di ogni attività in uno spazio dei nomi DNS. Gli altri servizi risolvono myservice.namespace.local negli IP delle attività attualmente integre. ECS registra automaticamente le nuove attività e rimuove dalla registrazione quelle che hanno avuto esito negativo, mantenendo aggiornati i record DNS senza gestione manuale.
Segreti nelle definizioni delle attività ECS
Non inserisca mai credenziali direttamente nelle definizioni delle attività. Faccia invece riferimento ai segreti di Secrets Manager o Parameter Store nella definizione dell'attività: ECS li inietta come variabili d'ambiente all'avvio dell'attività. Il ruolo di esecuzione dell'attività deve disporre delle autorizzazioni per recuperare i segreti. Per Secrets Manager, utilizzi secretsmanager:GetSecretValue; per Parameter Store, utilizzi ssm:GetParameters. I segreti vengono recuperati una sola volta all'avvio del container; per acquisire nuovi valori dopo la rotazione dei segreti è necessario sostituire l'attività.
'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'
}
]Verifica rapida
Verifichi la propria comprensione dei concetti AWS Solutions Architect (SAA-C03) trattati in questa lezione.
Riepilogo della lezione
In questa lezione ha appreso che i cluster ECS raggruppano le risorse di calcolo in cui vengono eseguite le attività; le definizioni delle attività definiscono immagini dei container, CPU/memoria, ruoli e registrazione come modelli sottoposti a versionamento; infine, i servizi ECS mantengono il conteggio desiderato delle attività, si integrano con ALB per la distribuzione del traffico e supportano distribuzioni rolling o blue/green. Ora confronteremo il tipo di avvio EC2 con il tipo di avvio serverless Fargate.
Domande Frequenti
La lezione «Cluster ECS, definizioni dei task e servizi» è gratuita?
Sì — il testo completo di «Cluster ECS, definizioni dei task e servizi» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso AWS Solutions Architect, passa a CoddyKit PRO. Il corso AWS Solutions Architect include 4 lezioni in totale.
Cosa imparerò in «Cluster ECS, definizioni dei task e servizi»?
Definire le definizioni delle attività ECS con immagini dei container e limiti di risorse, registrarle in un cluster e creare un servizio che mantenga il numero desiderato Eserciti AWS Solutions Architect con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare AWS Solutions Architect?
Non è richiesta alcuna esperienza precedente. AWS Solutions Architect su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Cluster ECS, definizioni dei task e servizi»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione AWS Solutions Architect?
Sì. Ogni lezione AWS Solutions Architect include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Cluster ECS, definizioni dei task e servizi
- Tipo di avvio EC2 e Fargate a confronto
- ECR: archiviazione e recupero delle immagini dei container
- Auto Scaling e bilanciamento del carico dei servizi ECS