Simplifique o Gerenciamento do AWS ECR com Este Poderoso Script Bash

Gerenciar repositorios de container no AWS ECR (Elastic Container Registry) pode rapidamente se tornar uma tarefa assustadora, especialmente a medida que sua infraestrutura cresce. Neste artigo, faremos uma analise aprofundada de um util script bash projetado para automatizar a aplicacao de politicas de ciclo de vida nos seus repositorios ECR. Este script nao apenas simplifica o gerenciamento de repositorios, mas tambem garante que apenas as imagens mais recentes sejam mantidas, ajudando voce a economizar custos de armazenamento e manter seu registro organizado.
O que Este Script Faz?
O objetivo principal deste script bash e automatizar o processo de aplicacao de uma politica de ciclo de vida que mantem apenas as tres imagens mais recentes em cada repositorio AWS ECR em uma regiao especificada. Aqui esta uma visao geral rapida de sua funcionalidade:
- Tratamento de Erros: O script e configurado para sair imediatamente se qualquer comando retornar um status nao-zero, o que minimiza o risco de comportamento nao intencional.
- Saida com Codigo de Cores: Usa codigos de cores ANSI para destacar mensagens (como avisos em vermelho), tornando a saida mais facil de interpretar.
- Modo Dry-Run: Para um teste seguro e nao destrutivo, o script inclui uma opcao
--dry-runque simula acoes sem realmente aplicar a politica. - Integracao com AWS CLI: Recupera nomes de repositorios usando a AWS CLI e depois itera sobre cada repositorio para verificar se existe uma politica de ciclo de vida antes de aplicar uma nova.
Desconstruindo o Script
1. Configurando o Ambiente
O script comeca aplicando tratamento de erro estrito com set -e e define codigos de cores ANSI para saida de terminal aprimorada. Isso garante que qualquer erro pare o script imediatamente, prevenindo operacoes nao intencionais.
#!/bin/bash
set -e
RED='\033[0;31m'
NC='\033[0m' # Sem Cor
2. Analisando Argumentos da Linha de Comando
Um loop simples processa argumentos de linha de comando para detectar se o script deve rodar em modo dry-run. Isso permite que os administradores testem o script sem fazer alteracoes reais.
DRY_RUN=false
while [[ "$#" -gt 0 ]]; do
case $1 in
--dry-run) DRY_RUN=true ;;
*) echo "Parametro desconhecido: $1"; exit 1 ;;
esac
shift
done3. Especificando a Regiao AWS e Recuperando Repositorios
O script e configurado para funcionar em uma regiao especifica (eu-central-1 por padrao). Ele recupera a lista de nomes de repositorios do AWS ECR usando a AWS CLI. Se nenhum repositorio for encontrado, ele sai com uma mensagem apropriada.
REGION="eu-central-1"
repos=$(aws ecr describe-repositories --region "$REGION" --query 'repositories[].repositoryName' --output text)
if [ -z "$repos" ]; then
echo "Nenhum repositorio encontrado na regiao $REGION."
exit 1
fi4. Definindo a Politica de Ciclo de Vida
Um objeto JSON e definido dentro do script para especificar a politica de ciclo de vida. Esta politica e configurada para manter apenas as ultimas tres imagens, o que e ideal para muitos casos de uso onde manter as imagens mais recentes e suficiente.
lifecycle_policy='{
"rules": [
{
"rulePriority": 1,
"description": "Manter ultimas 3 imagens",
"selection": {
"tagStatus": "any",
"countType": "imageCountMoreThan",
"countNumber": 3
},
"action": {
"type": "expire"
}
}
]
}'5. Aplicando a Politica de Ciclo de Vida a Cada Repositorio
O script entao percorre cada repositorio. Verifica se ja existe uma politica de ciclo de vida. Se existir, o repositorio e ignorado e um aviso e mostrado em vermelho. Se nao, a politica de ciclo de vida e aplicada ou uma mensagem de dry-run e impressa se esse modo estiver ativado.
for repo in $repos; do
echo "Processando repositorio: $repo"
if aws ecr get-lifecycle-policy --repository-name "$repo" --region "$REGION" > /dev/null 2>&1; then
echo -e "${RED}Politica de ciclo de vida ja existe para o repositorio $repo. Pulando...${NC}"
else
if [ "$DRY_RUN" = true ]; then
echo "DRY RUN: Aplicaria politica de ciclo de vida ao repositorio: $repo"
echo "DRY RUN: aws ecr put-lifecycle-policy --repository-name \"$repo\" --lifecycle-policy-text '$lifecycle_policy' --region \"$REGION\""
else
echo "Aplicando politica de ciclo de vida ao repositorio: $repo"
aws ecr put-lifecycle-policy \
--repository-name "$repo" \
--lifecycle-policy-text "$lifecycle_policy" \
--region "$REGION" | tee
fi
fi
done
echo "Processamento concluido."Beneficios de Usar Este Script
Automacao e Eficiencia
Aplicar politicas de ciclo de vida manualmente em varios repositorios pode ser tedioso e propenso a erros. Este script automatiza o processo, garantindo a aplicacao consistente de politicas e liberando tempo valioso para sua equipe.
Gerenciamento de Custos
Ao manter apenas as imagens mais recentes, o script ajuda a gerenciar os custos de armazenamento. Imagens antigas e nao utilizadas sao removidas automaticamente, reduzindo gastos desnecessarios com armazenamento.
Testes Seguros com Modo Dry-Run
Antes de fazer alteracoes permanentes, voce pode executar o script no modo dry-run. Este recurso fornece uma visualizacao clara de quais acoes serao executadas, minimizando o risco de erros.
Personalizavel e Extensivel
O script pode ser facilmente modificado para atender as suas necessidades especificas, como alterar a politica de retencao ou segmentar diferentes regioes. Seu design modular permite adaptacoes rapidas a medida que seu ambiente AWS evolui.
Conclusao
Automatizar tarefas rotineiras e uma estrategia-chave para DevOps e administracao de sistemas eficientes. Este script bash para aplicar politicas de ciclo de vida a repositorios AWS ECR e um excelente exemplo de como automacao simples pode gerar beneficios operacionais significativos. Seja para reduzir custos, simplificar seu fluxo de trabalho ou aplicar uma politica consistente em seus repositorios, este script oferece uma solucao confiavel e personalizavel.
Implemente este script no seu ambiente AWS e experimente a facilidade da gestao automatizada de repositorios hoje mesmo!
Mais de Ercan
Mais dois sites, mesmo autor, terreno diferente.
IA, LLMs, agentes, ML aplicado.
Notas de campo sobre cargas de IA. Análise de custos do Bedrock, padrões de agentes, trade-offs de armazenamento vetorial, modos de falha em produção.
Visitar ercan.ai →O hub. Sobre, consultoria, contato.
Hub pessoal para as duas trilhas de escrita. Quem sou eu, como funciona a consultoria, como me contatar.
Visitar ercanermis.com →