Detalhes do Amazon ECS
1. Estrutura de Clusters e Capacidade
1.1 Capacity Providers
- Capacidade gerenciada: Capacity providers permitem que você gerencie de forma dinâmica a capacidade de um cluster ECS. É possível especificar estratégias de escalabilidade que ajustem automaticamente a quantidade de instâncias EC2, equilibrando custo e disponibilidade.
- Auto Scaling Avançado: Combine Auto Scaling groups com capacity providers para reagir a picos de demanda. Você pode definir métricas que disparam a adição (ou remoção) de instâncias. Assim, o cluster automaticamente mantém a capacidade ideal para que as tarefas ECS sejam executadas sem interrupções.
1.2 EC2 x Fargate: Critérios Avançados de Escolha
- EC2:
- Maior controle do SO e da camada de rede, possibilitando otimizações específicas, como ajustes de kernel, uso de instâncias otimizadas para GPU e acesso direto ao servidor para ferramentas de segurança de terceiros.
- Maior responsabilidade de patch e manutenção das AMIs.
- Fargate:
- Simplifica a gestão de infraestrutura ao não expor o SO subjacente.
- Remove a necessidade de gerenciar escalabilidade de cluster, pois cada tarefa (task) ganha recursos isolados.
- Excelente para workloads com tamanho variável e que se beneficiam de um custo baseado em uso por segundo.
2. Task Definitions: Recursos Avançados
2.1 Montagem de Volumes e Storage
- Amazon EFS:
- Permite configurar volumes compartilhados entre containers ou serviços diferentes, mantendo dados persistentes.
- Útil para aplicações que precisam de acesso simultâneo ao mesmo volume (por exemplo, sistemas de cache ou upload de arquivos).
- Atenção às permissões de arquivo e à encriptação em repouso (EFS oferece criptografia nativa).
- Ephemeral Storage:
- Possível configurar espaço de armazenamento efêmero adicional em Fargate (até 200 GiB) ou usar discos locais em instâncias EC2.
- Ideal para caches temporários, manipulação de arquivos de curto prazo, mas lembre-se de que os dados não são persistidos após interrupção da tarefa.
2.2 Configurações de Rede
- Bridge x Host x AWSVPC
- Bridge Mode: Cria uma rede Docker separada, mapeando portas para o host. Útil quando você tem múltiplos containers executando na mesma instância com portas semelhantes.
- Host Mode: O container compartilha a mesma stack de rede da instância. Traz menor sobrecarga, mas requer cuidado para evitar conflitos de porta.
- AWSVPC Mode: Cada tarefa recebe um endereço IP próprio na VPC. Maior isolamento e rastreabilidade de tráfego, recomendado para microserviços que requerem segurança granular (melhor prática atual).
2.3 Secrets e Configurações
- Secrets Manager e Parameter Store
- Você pode injetar segredos em variáveis de ambiente ou em arquivos no container, consumindo-os diretamente do AWS Secrets Manager ou AWS Systems Manager Parameter Store.
- Use a sintaxe
"{\"SecretsManagerSecret\":\"<secret-name>\"}"
no arquivo de definição para simplificar a configuração.
3. Segurança Avançada
3.1 IAM Roles for Tasks
- Menor Privilégio: Sempre crie uma IAM role específica para cada tipo de tarefa, definindo apenas as ações necessárias.
- Isolamento entre Containers: Ao invés de um role único para todo o cluster, atribua diferentes roles a cada serviço (ou task) para evitar acessos indevidos a recursos não relacionados.
3.2 Controle de Rede e Zero Trust
- Network ACLs e Security Groups:
- Para tarefas que usem
awsvpc
, cada tarefa pode ter seu próprio security group. Isso permite um controle altamente refinado de tráfego ingress e egress. - Considere agrupar serviços back-end em subnets privadas, usando um NAT Gateway para acesso à internet, deixando apenas front-ends voltados ao público em subnets públicas.
- Para tarefas que usem
- AWS Verified Access (ZTA):
- Se sua arquitetura for desenhada com zero trust em mente, pode ser vantajoso integrar o ECS a soluções de VPN-less access e checagens de contexto para cada solicitação, dependendo do modelo de governança.
3.3 Patching e Imagens Seguras
- Ciclo de Vida de Imagens
- Automatize a verificação de vulnerabilidades de imagens via Amazon ECR image scanning ou ferramentas de terceiros (Twistlock, Aqua Security, etc.).
- Crie um pipeline de CI/CD que interrompe o build se detecções de alto risco forem encontradas.
- Atualização de AMIs (EC2)
- Se estiver usando instâncias EC2, crie um processo regular de patching e atualização das AMIs (por exemplo, via EC2 Image Builder) para manter o SO atualizado e reduzir falhas de segurança.
3.4 IDS/IPS e Integração com GuardDuty
- Amazon GuardDuty
- Monitora tráfego de rede e chamadas de API dentro da sua conta AWS, identificando atividades potencialmente maliciosas.
- Importante habilitar a integração com o ECR e a VPC para detecção de comportamentos suspeitos relacionados a containers (por exemplo, mineração de criptomoeda ou varreduras de porta).
- AWS Security Hub
- Centraliza achados de segurança, incluindo integrações com GuardDuty, AWS Config e soluções de terceiros.
- Possibilita criar automated response via Amazon EventBridge para remediação rápida de incidentes.
4. Observabilidade e Monitoração
4.1 Logs e Métricas
- CloudWatch Logs
- Cada container pode enviar logs de aplicação diretamente para o CloudWatch.
- Configure log drivers (por exemplo,
awslogs
,fluentd
,splunk
) para encaminhar dados de log para o destino desejado.
- Container Insights
- Disponibiliza métricas detalhadas de CPU, memória, uso de disco, rede, além de insights sobre a performance de cada tarefa ou serviço ECS.
- Ajuda a identificar gargalos e comportamentos anormais.
4.2 Distribuição de Tracing e Telemetria
- AWS X-Ray
- Monitora transações distribuídas entre diferentes serviços microserviços.
- Agrega métricas, latência e logs associados a requisições de ponta a ponta, facilitando a detecção de problemas de desempenho e mapeamento de dependências.
4.3 Estrutura de Deployment
- Circuit Breakers e Deployments Rolling
- O ECS suporta circuit breaker para interromper de forma automática implantações que falharem ou demorarem muito tempo para estabilizar.
- Tenha métricas definidas (por exemplo, erros HTTP 5xx) que disparem a reversão automática antes que problemas se propaguem em ambiente de produção.
5. Estratégias de Alta Disponibilidade e Disaster Recovery
5.1 Multi-AZ
- Serviços ECS podem ser configurados para executar tarefas em múltiplas zonas de disponibilidade (AZs), aumentando a resiliência a falhas de infraestrutura.
5.2 Cross-Region Replication
- ECR Cross-Region
- Caso precise de maior resiliência de imagens, habilite a replicação para que as imagens fiquem disponíveis em diferentes regiões.
- Útil para arquiteturas de DR (Disaster Recovery), em que é necessário trazer aplicações rapidamente em outra região.
5.3 Backup e Versões de Imagens
- Versionamento de Imagens
- Sempre versionar suas imagens Docker (tags sem ambiguidade) para reverter rapidamente em casos de incidentes.
- Snapshots de Configurações
- Utilize o AWS CloudFormation ou Terraform para gerenciar a infraestrutura como código. Assim, sua configuração de ECS (serviços, tasks, IAM, redes etc.) pode ser reproduzida em outro ambiente em caso de desastre.
6. Casos Específicos e Boas Práticas
6.1 ECS Exec: Depuração Segura de Containers
- ECS Exec
- Permite que você acesse o shell dentro de um container em execução, de forma análoga ao
kubectl exec
no Kubernetes. - Requer configuração do AWS Systems Manager (SSM), que gerencia esse acesso de forma segura e auditável (todos os comandos são registrados em CloudTrail, se habilitado).
- Permite que você acesse o shell dentro de um container em execução, de forma análoga ao
6.2 Integração com Outras Soluções
- AWS WAF
- Se você estiver publicando serviços via ALB (Application Load Balancer), é possível integrar com AWS WAF para proteção de camadas 7, bloqueando SQL injection, XSS e outras ameaças de aplicação.
- Shield e Firewall Manager
- Para workloads críticas que exigem proteção contra DDoS, ative o AWS Shield Advanced e gerencie regras de bloqueio proativas via AWS Firewall Manager.
6.3 Políticas de Governança
- AWS Organizations & Service Control Policies (SCPs)
- Restringe globalmente algumas ações ou serviços em contas específicas para reduzir risco de mau uso.
- Exemplo: bloquear a criação de recursos ECS fora de determinada região, ou proibir acesso de root a mudanças no cluster.