ECR
Elastic Container Registry — registro privado de imagens Docker
O Amazon ECR (Elastic Container Registry) é o repositório privado de imagens Docker usadas pelo ECS. Cada ambiente (ou cada serviço) costuma ter um ou mais repositórios, com tags como latest, v1.2.3 ou o hash do commit do Git.
Por que usar ECR no CRM
| Benefício | Descrição |
|---|---|
| Integração nativa | ECS puxa imagens sem expor registry público |
| IAM | Push/pull controlado por políticas AWS |
| Scan de vulnerabilidades | Opcional: análise da imagem após push |
| Lifecycle | Regras para apagar tags antigas e economizar storage |
Estrutura típica
<account-id>.dkr.ecr.<region>.amazonaws.com/<repositorio>:<tag>| Elemento | Exemplo | Significado |
|---|---|---|
| Registry | 123456789.dkr.ecr.sa-east-1.amazonaws.com | Endpoint da conta/região |
| Repositório | crm-api | Nome lógico do serviço |
| Tag | 20240520-abc123 | Versão imutável ou latest |
Fluxo CI/CD → ECS
- Pipeline faz
docker buildda API ou worker. - Autentica no ECR (usuário IAM ou role do pipeline).
docker pushcom tag versionada.- Task definition atualizada com URI
...@sha256:...ou tag específica. - ECS faz pull ao subir nova task.
Tags: boas práticas
| Estratégia | Prós | Contras |
|---|---|---|
Tag por commit (git sha) | Rastreável, imutável | Muitas tags sem lifecycle |
Tag semver (1.4.2) | Legível para releases | Requer disciplina de release |
latest | Simples em dev | Perigoso em produção (sobrescreve) |
Em produção, prefira referenciar na Task Definition a tag imutável ou o digest (@sha256:...) gerado no push, não apenas latest, para que rollback e auditoria sejam previsíveis.
Permissões (IAM)
| Ação | Quem precisa |
|---|---|
ecr:GetAuthorizationToken | CI e desenvolvedores que fazem push local |
ecr:BatchCheckLayerAvailability, PutImage, InitiateLayerUpload, ... | Pipeline de build |
ecr:BatchGetImage, GetDownloadUrlForLayer | Role da task execution do ECS (pull na subida da task) |
A task role (runtime da aplicação) não precisa de permissão ECR se a imagem já foi puxada na inicialização — ela precisa de permissões para S3, SQS, etc., conforme o app.
Lifecycle e custos
- Imagens são cobradas por GB-mês armazenado.
- Políticas de lifecycle podem manter, por exemplo, as últimas 30 tags e expirar o resto.
- Scanning (se habilitado) gera custo adicional por imagem analisada.