Clusters do ECS, definições de tarefas e serviços
Defina definições de tarefas do ECS com imagens de contêiner e limites de recursos, registre-as em um cluster e crie um serviço para manter a quantidade desejada.
Clusters do ECS, definições de tarefas e serviços é uma aula grátis de Cloud & IT Cert Prep no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Cloud & IT Cert Prep, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Cloud & IT Cert Prep inclui 4 aulas no total.
Por que usar contêineres na AWS?
Os contêineres empacotam uma aplicação e todas as suas dependências em uma unidade portátil e isolada, que funciona de maneira consistente em diferentes ambientes. O Amazon ECS (Elastic Container Service) é o serviço de orquestração de contêineres totalmente gerenciado da AWS, que executa contêineres Docker sem que seja necessário gerenciar um plano de controle. O ECS integra-se profundamente aos serviços da AWS (IAM, ALB, CloudWatch, Secrets Manager) e é a maneira recomendada de executar contêineres na AWS sem a complexidade do Kubernetes.
Clusters do ECS: a unidade de agrupamento
Um cluster do ECS é um agrupamento lógico de recursos computacionais no qual os contêineres são executados. Um cluster pode conter instâncias EC2 (tipo de execução EC2), capacidade do Fargate (tipo de execução Fargate) ou ambos. Pode haver vários serviços e tarefas independentes em um único cluster. Os clusters são regionais, mas abrangem zonas de disponibilidade. Um padrão comum é ter um cluster por ambiente (desenvolvimento, preparação e produção), com vários serviços em cada cluster para diferentes microsserviços.
aws ecs create-cluster \
--cluster-name 'MyAppCluster' \
--capacity-providers FARGATE FARGATE_SPOT \
--default-capacity-provider-strategy \
capacityProvider=FARGATE,weight=1,base=1Definições de tarefas: o modelo
Uma definição de tarefa é o modelo para executar contêineres no ECS, semelhante a um arquivo do Docker Compose. Ela especifica: imagens de contêiner (URIs do ECR ou Docker Hub), alocações de CPU e memória, mapeamentos de portas, variáveis de ambiente, configuração de registro, volumes e a função de tarefa do IAM. Uma definição de tarefa é versionada — cada revisão é imutável. Pode definir vários contêineres por tarefa para padrões de contêiner auxiliar (aplicação principal + encaminhador de registros + agente de monitoramento).
{
'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}]
}]
}Função da tarefa versus função de execução
As tarefas do ECS usam duas funções do IAM separadas, com finalidades distintas. A função de execução da tarefa é usada pelo agente do ECS para extrair imagens de contêiner do ECR, enviar registros ao CloudWatch e recuperar segredos do Secrets Manager ou do Parameter Store durante a inicialização da tarefa. A função da tarefa é usada pelo código da aplicação executado dentro do contêiner para chamar serviços da AWS (S3, DynamoDB, SQS). Sempre atribua permissões de menor privilégio a cada função separadamente — nunca conceda à função de execução permissões de que a aplicação não precisa.
Serviços do ECS para cargas de trabalho de longa duração
Um serviço do ECS mantém um número especificado de instâncias de tarefas em execução simultânea (a contagem desejada). Se uma tarefa falhar ou parar, o programador do serviço iniciará automaticamente uma substituta. Os serviços também se integram ao Elastic Load Balancing para distribuição de tráfego e aceitam implantações graduais e implantações azul/verde. Use um serviço para qualquer processo de longa duração (servidor Web, servidor de API ou processo de trabalho em segundo plano). Para tarefas executadas uma única vez, execute uma tarefa independente.
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"
}
}'Modos de rede: awsvpc versus bridge
O modo de rede awsvpc fornece a cada tarefa do ECS sua própria interface de rede elástica (ENI) e seu próprio endereço IP privado dentro da VPC, assim como uma instância do EC2. Isso permite um controle detalhado dos grupos de segurança por tarefa e é obrigatório para tarefas do Fargate. O modo de rede bridge usa a rede virtual integrada do Docker no host, com mapeamento de portas do host para o contêiner — ele compartilha a ENI da instância EC2 do host. Para a prova SAA-C03, o Fargate sempre usa awsvpc; o tipo de execução EC2 pode usar qualquer um dos dois.
Associar um balanceador de carga a um serviço do ECS
Registre seu serviço do ECS em um grupo de destino do ALB para distribuir o tráfego entre as instâncias de tarefas. Quando uma nova tarefa é iniciada, o ECS a registra automaticamente no grupo de destino; quando ela para, o ECS a remove do registro. Configure um período de tolerância para a verificação de integridade (por exemplo, 60–120 segundos) para dar tempo aos contêineres de iniciar antes da execução das verificações de integridade. Sem um período de tolerância, o ALB pode marcar um contêiner de inicialização lenta como não íntegro antes que esteja pronto, causando ciclos de substituição.
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 3Implantação gradual versus implantação azul/verde
Os serviços do ECS aceitam duas estratégias de implantação: a atualização gradual substitui gradualmente as tarefas antigas por novas, com configuração por meio de minimumHealthyPercent (limite inferior) e maximumPercent (limite superior). Definir 100/200 significa que as tarefas antigas continuam em execução enquanto as novas são iniciadas (é necessário manter 100% de integridade, com capacidade de até 200%). A implantação azul/verde (por meio do AWS CodeDeploy) cria um novo conjunto de tarefas ao lado do antigo, desloca gradualmente o tráfego usando o roteamento ponderado do ALB e encerra as tarefas antigas após a validação. A implantação azul/verde permite reversão sem tempo de inatividade.
Registro no CloudWatch a partir do ECS
Configure o controlador de registros awslogs na definição da tarefa para enviar diretamente o stdout/stderr do contêiner ao CloudWatch Logs. Especifique um grupo de registros, uma região e um prefixo de fluxo. A função de execução da tarefa precisa das permissões logs:CreateLogStream e logs:PutLogEvents. Para agregação centralizada de registros entre vários serviços, considere usar o FireLens (um contêiner auxiliar com Fluent Bit ou Fluentd) para encaminhar registros ao S3, ao OpenSearch ou a sistemas de registro de terceiros.
'logConfiguration': {
'logDriver': 'awslogs',
'options': {
'awslogs-group': '/ecs/myapp',
'awslogs-region': 'us-east-1',
'awslogs-stream-prefix': 'myapp'
}
}Descoberta de serviços do ECS com o Cloud Map
Quando os microsserviços no ECS precisam se comunicar entre si, endereços IP codificados diretamente no código não funcionam, pois as tarefas são efêmeras e recebem novos IPs a cada inicialização. Use o AWS Cloud Map (descoberta de serviços do ECS) para registrar o IP e a porta de cada tarefa em um namespace DNS. Outros serviços resolvem myservice.namespace.local para obter os IPs atuais das tarefas íntegras. O ECS registra automaticamente as novas tarefas e remove do registro as que falharam, mantendo os registros DNS corretos sem gerenciamento manual.
Segredos nas definições de tarefas do ECS
Nunca codifique credenciais diretamente nas definições de tarefas. Em vez disso, faça referência a segredos do Secrets Manager ou do Parameter Store na definição da tarefa — o ECS os injeta como variáveis de ambiente na inicialização da tarefa. A função de execução da tarefa precisa de permissões para recuperar os segredos. Para o Secrets Manager, use secretsmanager:GetSecretValue; para o Parameter Store, use ssm:GetParameters. Os segredos são recuperados uma vez na inicialização do contêiner; a rotação de segredos exige a substituição da tarefa para que os novos valores sejam obtidos.
'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ção rápida
Teste sua compreensão dos conceitos do AWS Solutions Architect (SAA-C03) abordados nesta lição.
Recapitulação da lição
Nesta lição, você aprendeu que os clusters do ECS agrupam os recursos computacionais nos quais as tarefas são executadas; as definições de tarefas definem imagens de contêiner, CPU/memória, funções e registro como modelos versionados; e os serviços do ECS mantêm a contagem desejada de tarefas, integram-se ao ALB para distribuição de tráfego e aceitam implantações graduais ou azul/verde. A seguir, compararemos o tipo de execução EC2 com o tipo de execução Fargate sem servidor.
Perguntas Frequentes
A aula “Clusters do ECS, definições de tarefas e serviços” é grátis?
Sim — o texto completo de “Clusters do ECS, definições de tarefas e serviços” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Cloud & IT Cert Prep, atualize para CoddyKit PRO. O curso de Cloud & IT Cert Prep inclui 4 aulas no total.
O que vou aprender em “Clusters do ECS, definições de tarefas e serviços”?
Defina definições de tarefas do ECS com imagens de contêiner e limites de recursos, registre-as em um cluster e crie um serviço para manter a quantidade desejada. Você pratica Cloud & IT Cert Prep com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Cloud & IT Cert Prep?
Nenhuma experiência prévia é necessária. Cloud & IT Cert Prep no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Clusters do ECS, definições de tarefas e serviços”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Cloud & IT Cert Prep?
Sim. Cada aula de Cloud & IT Cert Prep inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Clusters do ECS, definições de tarefas e serviços
- Tipo de execução EC2 versus Fargate
- ECR: Armazenamento e extração de imagens de contêiner
- Escalonamento automático e balanceamento de carga de serviços do ECS