ECR: ECR sem utilização

Esta regra identifica repositórios do Amazon Elastic Container Registry (ECR) que:

  • Foram criados há um período superior ao intervalo definido na regra.

  • Não registraram nenhuma atividade de pull (download de imagem) no período analisado.

O objetivo é detectar repositórios potencialmente obsoletos ou abandonados que continuam gerando custo de armazenamento.


Contexto da regra e impacto no negócio

O Amazon ECR é amplamente utilizado para armazenar imagens Docker utilizadas por:

  • Amazon EKS

  • Amazon ECS

  • AWS Lambda (imagens containerizadas)

  • Pipelines CI/CD

Com o tempo, ambientes acumulam repositórios criados para:

  • POCs.

  • Testes temporários.

  • Versões antigas de aplicações.

  • Projetos descontinuados.

Mesmo sem uso, repositórios ECR geram custo contínuo baseado em armazenamento (GB/mês).

Impactos principais:

  • Crescimento silencioso de custo de storage.

  • Aumento da superfície de exposição de imagens antigas.

  • Complexidade operacional desnecessária.

  • Risco de manter imagens com vulnerabilidades conhecidas.

Se não tratados, esses repositórios permanecem indefinidamente consumindo orçamento.


Detalhamento técnico da regra

A regra executa análise regional cruzando dados do ECR e CloudWatch.

Como a regra é executada

  1. A regra autentica na conta AWS.

  2. Percorre todas as regiões ativas.

  3. Lista todos os repositórios ECR via ecr:DescribeRepositories.

  4. Aplica filtro temporal baseado na data de criação (createdAt).

  5. Consulta métricas no CloudWatch para cada repositório.

  6. Avalia se houve atividade de pull no período analisado.

  7. Caso não haja pulls registrados, o repositório é sinalizado.


Lógica aplicada

Um repositório será considerado não utilizado quando:

  • Atender ao critério temporal configurado.

  • A soma da métrica RepositoryPullCount no período analisado for igual a zero.

  • Ou não houver datapoints retornados pelo CloudWatch.


Campos analisados

  • repositoryName

  • repositoryArn

  • repositoryUri

  • createdAt

  • tags

  • Métrica CloudWatch:

    • Namespace: AWS/ECR

    • MetricName: RepositoryPullCount

    • Statistic: Sum


Parâmetros considerados na busca

APIs utilizadas:

  • ecr:DescribeRepositories

  • cloudwatch:GetMetricStatistics

Métrica analisada:

Agregação:

  • Período: 86400 segundos (1 dia)

  • Estatística: Sum

Condição de disparo:


Período Avaliado (Filtro Temporal)

Período Avaliado (Filtro Temporal): A regra avalia a data de criação do repositório (createdAt). O intervalo de análise corresponde ao operador do período do filtro (ex: "maior que") combinado com os dias do período do filtro definidos na configuração da regra. Exemplo: Padrão é configurado para "Maior que 60 dias", a regra analisará apenas repositórios criados há mais de 60 dias e verificará se não houve pulls nesse período.

Esse parâmetro pode ser customizado conforme a necessidade do cliente, permitindo ajustar a sensibilidade da detecção de repositórios ociosos.

Além disso, o mesmo número de dias é utilizado para definir o período de consulta da métrica de pull no CloudWatch.


Intervalo de Análise

Execução padrão: a cada 8 horas.


Cálculo de Savings

O savings é baseado na remoção do custo recorrente de armazenamento das imagens contidas no repositório.


Fórmula Conceitual

Onde:

  • O armazenamento é cumulativo.

  • O custo é cobrado por GB/mês.

  • A economia é recorrente após exclusão do repositório ou aplicação de lifecycle policy.


Campo de custo utilizado

No Billing AWS:

  • Service: AmazonECR

  • Usage Type:

    • ECR-Storage-ByteHrs

  • Line Item Type: Usage

  • Campo financeiro considerado:

    • Unblended Cost

    • Ou Amortized Cost, conforme modelo adotado.


Elementos considerados

  • Tamanho total das imagens armazenadas.

  • Região.

  • Preço vigente por GB/mês.

  • Não há projeção futura automática, o cálculo representa economia recorrente mensal após remoção.


Exemplo aplicado ao Billing

Cenário:

Repositório com:

  • 200 GB armazenados.

  • Preço médio: $0.10 por GB/mês.

Cálculo:

Savings anual:

Se houver 10 repositórios similares:


Dicas de uso e boas práticas para o usuário

  • Verificar se o repositório é referenciado por:

    • EKS

    • ECS

    • Pipelines CI/CD

  • Implementar lifecycle policies para:

    • Manter apenas últimas versões.

    • Remover imagens antigas automaticamente.

  • Utilizar tags padronizadas:

    • Environment

    • Owner

    • Application

  • Priorizar remoção de repositórios grandes.

  • Validar dependências antes da exclusão.

  • Considerar retenção diferenciada para ambientes regulados.

Possíveis falsos positivos:

  • Repositórios utilizados apenas para disaster recovery.

  • Imagens raramente utilizadas, mas críticas.

Recomenda-se validação técnica antes da exclusão definitiva.

Last updated