AWS ECR(Elastic Container Registry)에서 컨테이너 리포지토리를 관리하는 것은 특히 인프라가 성장함에 따라 빠르게 부담스러운 작업이 될 수 있다. 이 글에서는 ECR 리포지토리에 Lifecycle Policy 적용을 자동화하도록 설계된 편리한 Bash 스크립트를 심층적으로 살펴본다.

이 스크립트가 하는 일

이 Bash 스크립트의 주요 목적은 지정된 리전의 각 AWS ECR 리포지토리에 최신 3개의 이미지만 유지하는 Lifecycle Policy를 적용하는 프로세스를 자동화하는 것이다:

  • 오류 처리: 어떤 명령이 0이 아닌 상태를 반환하면 즉시 종료.
  • 컬러 코드 출력: ANSI 컬러 코드 사용.
  • Dry-Run 모드: --dry-run 옵션으로 실제 정책을 적용하지 않고 시뮬레이션.
  • AWS CLI 통합: AWS CLI를 사용하여 리포지토리 이름을 조회한 후 각 리포지토리를 순회.

Lifecycle Policy 정의

lifecycle_policy='{
  "rules": [
    {
      "rulePriority": 1,
      "description": "Keep last 3 images",
      "selection": {
        "tagStatus": "any",
        "countType": "imageCountMoreThan",
        "countNumber": 3
      },
      "action": { "type": "expire" }
    }
  ]
}'

결론

일상적인 작업을 자동화하는 것은 효율적인 DevOps 및 시스템 관리를 위한 핵심 전략이다. 이 Bash 스크립트는 간단한 자동화가 어떻게 중요한 운영상의 이점을 가져올 수 있는지 보여주는 훌륭한 예시다.