AWS 프리티어 ECR 프라이빗 리포지토리에 대한 용량은 월 500MB를 1년 동안 받습니다. 만약 private 리포지토리의 데이터가 500MB 이상인 경우 GB 당 월 0.10 USD
과금을 받습니다.
현재 ECR 리포지토리에 80MB 정도 크기로 배포가 이뤄집니다. 총 6회 이상 ECR 프라이빗 리포지토리에 ECR 컨테이너 이미지가 쌓이면 500MB를 넘어섭니다.
500MB 한도 내에서 서비스를 유지하려면 매번 배포 때마다 이전 ECR 프라이빗 리포지토리를 비워줘야 합니다. 하지만 만약 롤백(RollBack
) 상황 시 이전 ECR 컨테이너 이미지가 없어 롤백(RollBack
) 을 할 수 없는 상황이 발생합니다.
문제를 해결하기 위해서는 ECR 프라이빗 리포지토리 용량을 효율적으로 관리와 롤백이 가능한 상황을 유지해야 합니다.
백엔드 개발 완료 후 Merge 이벤트 발생 시 GitHub Actions를 통해 자동 빌드 및 배포를 수행됩니다.
이때 ECR 배포 전에 ECR 프라이빗 리포지토리에 이미지를 배포하기 전 기존 이미지를 삭제하는 로직을 GitHub Actions YAML
파일에 다음과 같이 구현했습니다.
- name: ECR Delete
run: |
IMAGE_TAG=$(aws ecr describe-images --repository-name ${{ env.IMAGE }} | jq '.imageDetails[].imageTags[0]')
if [[ -z "$IMAGE_TAG" ]]; then
echo "No images found in the repository."
else
aws ecr batch-delete-image --repository-name ${{ env.IMAGE }} --image-ids imageTag=$IMAGE_TAG
fi
이 로직은 ECR에서 이미지 태그를 확인하고, 존재하는 경우 해당 이미지를 삭제합니다.
하지만 이 방식은 롤백 상황 발생 시 필요한 이전 버전 이미지까지 삭제되는 문제가 있었습니다.