본문 바로가기
[TOP]/EC2

[AWS 오토스케일링] Launch Template(시작 템플릿) 과거 버전 안전 삭제 가이드!!

by METAVERSE STORY 2025. 12. 2.
반응형

 

 




---

📌 AWS 오토스케일링 Launch Template 과거 버전, 삭제해도 운영에 문제 없을까? (완벽 정리)

AWS EC2 Auto Scaling을 운영하다 보면 Launch Template(시작 템플릿)의 버전이 수십 개씩 쌓여 관리가 어려워지는 경우가 많습니다.
버전 번호가 1, 2, 3… 50, 100을 넘어가면 정리해야 하는지, 삭제해도 서비스에 문제 없는지 고민되죠.

이번 글에서는
“Launch Template의 오래된 버전을 삭제해도 실제 운영 서비스에 위험이 없는지”,
그리고 안전하게 버전 정리를 하는 절차를 실무 관점으로 아주 자세하게 설명드립니다.


---

🧩 1. 결론부터 말하면?

👉 네, 과거 버전은 대부분 삭제해도 운영 인스턴스에는 영향 없음.
👉 단, Auto Scaling Group(ASG)이 사용 중인 버전인지 반드시 확인해야 함.
👉 Default 버전은 삭제 불가 → 먼저 변경해야 함.

✔ 이미 실행 중인 EC2 인스턴스는 자신이 생성된 당시의 템플릿 설정을 그대로 유지합니다.
→ 따라서 템플릿 버전을 삭제해도 기존 인스턴스가 중단되거나 설정이 바뀌는 일은 없습니다.

문제가 발생하는 경우는 아래 단 하나입니다.

> ASG가 특정 버전(예: version=7)을 참조 중인데, 그 버전을 삭제하면
이후 스케일 아웃 또는 교체(Instance Refresh)가 실패할 수 있다.



그래서 핵심은 **“삭제해도 되는 버전인지 확인하는 것”**입니다.


---

🧩 2. Launch Template 버전 구조 이해하기

Launch Template은 크게 세 가지 방식으로 ASG와 연결됩니다.

참조 방식 의미 위험도

숫자 버전 (예: 5) 해당 버전을 고정 사용 ⚠ 삭제 위험 매우 큼
$Default 기본 버전을 항상 사용 안전함
$Latest 가장 최근 생성된 버전 사용 상대적으로 안전함 (예측성은 떨어짐)


즉,

ASG가 숫자 버전을 사용 중 → 반드시 삭제 금지

ASG가 $Default 또는 $Latest 사용 중 → 사용 중인 특정 버전 없이 동적으로 반영됨 → 오래된 버전 삭제 가능



---

🧩 3. 삭제해도 안전한 경우

다음 조건이면 과거 버전을 안심하고 삭제해도 됩니다.


---

✔ (1) Auto Scaling Group이 $Default 또는 $Latest를 사용 중

AWS 콘솔에서 아래 위치 확인:

EC2 → Auto Scaling Groups → 세부 정보 → Launch Template → Version

$Default or $Latest → 과거 버전 삭제 OK

숫자(예: 3) → 해당 버전 삭제 금지



---

✔ (2) 삭제 대상 버전이 Default 버전이 아닌 경우

Default 버전은 삭제할 수 없습니다.
만약 Default 버전이 오래된 버전이라면 Default를 다른 버전으로 변경한 뒤 삭제해야 합니다.


---

✔ (3) 현재 실행 중 인스턴스에 영향 없음

기존 인스턴스는 자신이 생성된 당시의 템플릿 설정을 그대로 유지합니다.

즉,

> 템플릿 버전 삭제 → 기존 인스턴스에는 영향 없음

영향받는 부분은 오직 새로운 인스턴스가 생성될 때(스케일 아웃, 자동 교체, 롤링 업데이트)뿐입니다.




---

🧩 4. 삭제하면 안 되는 경우

아래 상황에서는 절대로 지우면 안 됩니다.


---

❌ (1) Auto Scaling Group이 특정 버전 번호(ex: v7)를 사용 중

삭제하면 ASG가 새 인스턴스를 시작하지 못해 장애로 이어집니다.

스케일 아웃 실패

Instance Refresh 실패

Launch Failed 오류 발생



---

❌ (2) Default 버전을 삭제하려 할 때

Default는 보호되어 있어 삭제 불가.
먼저 Default를 변경해야 합니다.


---

🧩 5. 실무에서 사용하는 "안전 정리 절차"

아래 절차대로 하면 100% 안전하게 버전 정리가 가능합니다.


---

✔ Step 1. ASG가 어떤 버전을 사용하는지 확인

CLI 예시:

aws autoscaling describe-auto-scaling-groups \
  --query "AutoScalingGroups[].{ASG:AutoScalingGroupName,LT:LaunchTemplate}" \
  --output table

확인 포인트:

LaunchTemplateId

Version → $Default, $Latest, 숫자



---

✔ Step 2. ASG가 특정 숫자 버전을 사용 중이면 안전한 버전으로 변경

예시(ASG를 Default 버전으로 변경):

aws autoscaling update-auto-scaling-group \
  --auto-scaling-group-name my-asg \
  --launch-template "LaunchTemplateId=lt-123456,Version='$Default'"


---

✔ Step 3. Default 버전을 변경(필요 시)

Default를 다른 버전으로 변경:

aws ec2 modify-launch-template \
  --launch-template-id lt-123456 \
  --default-version 12


---

✔ Step 4. 오래된 버전 삭제

aws ec2 delete-launch-template-versions \
  --launch-template-id lt-123456 \
  --versions 1 2 3 4 5

한 번에 200개까지 삭제 가능

이미 삭제된 번호는 다시 생성되지 않음(번호는 계속 증가)



---

✔ Step 5. 검증(Instance Refresh 또는 테스트 스케일 아웃)

ASG에서 Instance Refresh 실행:

새 버전으로 인스턴스를 정상 생성하는지 확인

서비스 중단 없이 롤링 업데이트 가능



---

🧩 6. 현업에서 자주 쓰는 자동 정리 스크립트 예시

"삭제 가능한 버전만 자동으로 삭제"하는 스크립트도 만들 수 있습니다.
예: ASG 사용 버전 제외 + 생성일 90일 이전 버전 삭제.
원하시면 bash / python / Cloud Custodian 버전 모두 제작해 드립니다.


---

🧩 7. 실제 운영 팁

신규 버전 생성 시 명확한 버전 Description 작성
→ 나중에 정리할 때 매우 편함

Terraform/IaC로 관리하는 경우
→ $Latest 대신 명시적 버전 사용 권장(예측성 확보)

Launch Template 버전이 너무 많아지면
→ 템플릿 자체를 새로 만들고 마이그레이션하는 것도 깔끔한 방법



---

📌 결론: 그냥 삭제하면 안 되고, “ASG 사용 버전 확인”이 전부다

정리하면 아래 한 줄로 끝납니다.

> ASG가 사용 중인 버전만 아니면, 오래된 Launch Template 버전은 삭제해도 운영에는 전혀 문제 없다.



오토스케일링이 어떤 버전을 참조하는지 확인만 하면
버전 수십~수백 개가 쌓인 템플릿도 안전하게 깔끔하게 정리할 수 있다!!



반응형

댓글