O ECR (Elastic Container Registry) é o armário das imagens de contêiner. Você constrói a imagem da sua aplicação na sua máquina (docker build), envia pro ECR (docker push), e o ECS ou o EKS baixa dali pra rodar. É como o S3, mas especializado em imagens Docker.
Guardar de forma privada e segura as imagens que seus contêineres usam, integradas ao IAM e aos serviços de contêiner da AWS. Sem um registro, não tem de onde o ECS/EKS puxar o que executar.
Cada um deles roda de verdade no terminal do CLImb, com a mesma saída e as mesmas mensagens de erro que a AWS devolve.
aws ecr describe-repositoriesaws ecr describe-repositories
aws ecr describe-repositories
aws ecr create-repositoryaws ecr create-repository
aws ecr create-repository --repository-name loja-imagens
aws ecr get-login-passwordaws ecr get-login-password
aws ecr get-login-password aws ecr get-login-password | docker login --username AWS --password-stdin <conta>.dkr.ecr.<regiao>.amazonaws.com
aws ecr list-imagesaws ecr list-images
aws ecr list-images --repository-name loja-imagens
aws ecr describe-imagesUSO
aws ecr describe-images --repository-name loja-imagens [--image-ids imageTag=v1.0]
aws ecr put-image-scanning-configurationUSO
aws ecr put-image-scanning-configuration --repository-name loja-imagens \ --image-scanning-configuration scanOnPush=true
aws ecr start-image-scanUSO
aws ecr start-image-scan --repository-name loja-imagens --image-id imageTag=v1.0
aws ecr describe-image-scan-findingsUSO
aws ecr describe-image-scan-findings --repository-name loja-imagens \ --image-id imageTag=v1.2
aws ecr put-image-tag-mutabilityUSO
aws ecr put-image-tag-mutability --repository-name loja-imagens \ --image-tag-mutability IMMUTABLE
aws ecr start-lifecycle-policy-previewUSO
aws ecr start-lifecycle-policy-preview --repository-name loja-imagens \ --lifecycle-policy-text file://ciclo-imagens.json
aws ecr put-lifecycle-policyUSO
aws ecr put-lifecycle-policy --repository-name loja-imagens \ --lifecycle-policy-text file://ciclo-imagens.json
aws ecr delete-repositoryaws ecr delete-repository
aws ecr delete-repository --repository-name loja-imagens [--force]
Cada atividade é um pedido de trabalho, do jeito que ele chega no dia a dia — você resolve digitando os comandos, não escolhendo alternativa.
Antes de rodar um contêiner na AWS, a imagem dele precisa estar guardada em algum lugar — esse lugar é o ECR. Comece listando os repositórios.
Crie o repositório loja-imagens (é onde a imagem da aplicação vai morar).
O time de pagamentos vai publicar a API de checkout em contêiner, e esse repositório é seu de agora até o fim da trilha: a cada coisa nova que você aprender, você volta e melhora ele. Crie ele seguindo a convenção da empresa, que separa por time: pagamentos/checkout-api. <small>(sim, com barra: nome de repositório no ECR pode ter prefixo de time)</small>
Pra enviar imagem, o Docker precisa se autenticar no ECR. Peça a senha temporária de login. <small>(na vida real você liga isso com | docker login)</small>
Liste as imagens do repositório loja-imagens.
A linha do ECR apareceu na fatura e ninguém sabe explicar. O list-images que você acabou de usar não ajuda: ele devolve tag e digest, e nenhum dos dois custa dinheiro. Traga o que realmente importa das imagens do loja-imagens.
Você mostrou a lista na reunião e veio a pergunta certa: a v1.0, de sete meses atrás, ainda está lá? Repositório de verdade tem centenas de versões — traga só essa imagem, não o repositório inteiro.
Antes de mexer no repositório do time de pagamentos, olhe o que já mora nele. Liste os detalhes do pagamentos/checkout-api e responda pra você mesmo: tem alguma imagem ali que ninguém sabe de onde veio?
Uma imagem foi pro ar com uma falha conhecida do openssl e a explicação na reunião foi "esqueceram de varrer". Processo que depende de alguém lembrar não é processo. Faça o loja-imagens varrer sozinho a cada publicação.
Você ligou a varredura automática — e o aviso na tela te contou uma coisa desconfortável: ela só vale pro que chegar depois. A v1.2 sobe pra produção amanhã e nunca foi varrida por ninguém. Peça a varredura dela, agora.
A varredura rodou. Agora a decisão é sua: leia o que ela encontrou na v1.2 e repare em quem é o pacote com o problema mais grave — isso muda completamente quem tem que consertar.
Um serviço antigo ainda usa a v1.0, publicada há sete meses e nunca varrida. Varra e leia os achados dela — e compare com o que você viu na v1.2. A imagem não mudou nesse tempo; o que mudou foi o que o mundo descobriu sobre ela.
Volte pro repositório do projeto. Ligue a varredura automática nele e, já que ela não olha pra trás, mande varrer aquela imagem sem tag que você encontrou. <small>(sem tag, o único jeito de apontar pra ela é pelo imageDigest — pegue no describe-images)</small>
Aquela órfã do checkout-api tem uma explicação simples: alguém publicou por cima da tag v2.0, o conteúdo antigo perdeu o nome e ficou lá, pagando armazenamento. Enquanto a tag puder se mexer, o número da versão não prova nada. Trave as tags do pagamentos/checkout-api.
O time escreveu uma regra de limpeza automática e ela está no arquivo ciclo-imagens.json — leia ele com cat antes, porque essa regra APAGA imagem. Depois rode o ensaio dela no loja-imagens: descubra o que ela levaria junto, sem aplicar nada. <small>(o CLI lê um arquivo do disco com o prefixo file://)</small>
O ensaio mostrou o que sai e você concorda com a lista. Aplique a política do ciclo-imagens.json no loja-imagens — a partir daí o ECR limpa sozinho, todo dia, sem depender de ninguém lembrar.
Feche o repositório do projeto: ensaie a mesma política nele e depois aplique. Repare que o resultado do ensaio aqui é diferente do que deu no loja-imagens — e a diferença é exatamente aquela imagem órfã.
O laboratório do loja-imagens acabou: apague o repositório. Tente primeiro do jeito óbvio e leia o que voltar — o ECR não deixa você levar junto, sem querer, um repositório que ainda tem imagem dentro.
Ler explica. Digitar fixa. No CLImb você roda os comandos de verdade num terminal AWS simulado — o estado persiste entre eles, como na nuvem real.
As 3 primeiras atividades desta trilha são abertas; o resto faz parte do plano Pro.
Começar — 3 atividades grátis