남잭슨의 개발 블로그
EC2를 중지해도 EBS 볼륨, 보유한 탄력적 IP, 스냅샷 등의 비용은 남을 수 있습니다. 인스턴스가 stopped인 것과 AWS 계정 전체의 비용이 멈추는 것은 다른 상태입니다. 먼저 청구서에서 어떤 기간의 어떤 항목이 남았는지 확인해야 합니다. AWS도 인스턴스 상태별 과금 안내에서 EBS와 Elastic IP를 별도 비용으로 설명합니다.
이 글은 인스턴스를 중지한 뒤 비용을 읽는 확인 순서입니다. 실제 계정의 청구서를 분석한 사례나 월 절감액을 제시하는 글은 아닙니다. 설명용 상황을 따라 자신의 청구 기간·리전·보유 리소스를 맞춰 볼 수 있도록 구성했습니다.

중지된 컴퓨트와 보관 중인 저장소·주소 자원을 구분한 AI 생성 설명용 일러스트입니다. 실제 청구서나 비용 수치를 나타내지 않습니다.
월 누적 비용인지, 중지 이후 비용인지 구분하기
예를 들어 12일에 인스턴스를 중지하고 17일에 이번 달 비용을 봤다고 가정해 보겠습니다. 이번 달 합계에는 중지 전에 사용한 비용이 이미 들어 있습니다. 합계가 0원이 아니라는 사실만으로 중지 후에도 인스턴스 사용료가 계속 생겼다고 판단할 수는 없습니다.
Billing and Cost Management의 Bills에서 먼저 청구 월을 선택합니다. 현재 청구 기간은 예상 비용이고, 지난 기간의 확정 청구와는 상태가 다릅니다. 결제된 날짜와 실제 사용 기간도 같은 값으로 보지 않습니다. 이 구분은 AWS 청구서 읽기 안내에 설명돼 있습니다.
Cost Explorer를 이미 사용 중이라면 중지 전후가 포함된 기간을 일별로 봅니다. 다만 비용 데이터는 실시간 계측이 아닙니다. 전날까지의 사용량을 기반으로 하며 일부 항목은 24시간보다 늦게 반영될 수 있습니다. 중지 직후 화면을 새로 고친 결과만으로 효과를 확정하지 않는 이유입니다. Cost Explorer의 데이터 반영 기준을 함께 확인하세요.
비교 기록에는 중지한 날짜뿐 아니라 중지 시각과 시간대, 비용을 조회한 시각도 함께 적습니다. 중지 전후가 섞인 하루의 합계나 뒤늦게 반영된 사용분을 모두 중지 이후의 새 사용으로 해석하지 않기 위해서입니다.
중지하면 무엇이 멈추고 무엇이 남을까?
| 항목 | EC2 중지 후 확인할 점 | 흔한 착각 |
|---|---|---|
| 온디맨드 인스턴스 사용 | stopped 상태의 인스턴스 사용료는 발생하지 않음 | 그전에 발생한 이번 달 비용도 사라진다고 생각함 |
| EBS 볼륨 | 루트·추가 볼륨이 남아 있으면 저장 비용을 확인 | 서버를 껐으니 디스크도 무료라고 생각함 |
| 자동 할당 공개 IPv4 | 일반적인 중지 과정에서 주소가 해제됨. 이전 사용분은 별도 | 모든 종류의 공개 IP가 같은 방식으로 유지된다고 생각함 |
| Elastic IP | 계정에 할당된 주소가 남아 있는지 확인 | EC2에 연결만 해 두면 무료라고 생각함 |
| EBS 스냅샷 | 보관한 스냅샷의 저장 비용을 별도로 확인 | 볼륨의 상태를 바꾸면 스냅샷 비용도 없어지는 줄 앎 |
| 다른 서비스·약정 | 실제 청구된 서비스와 구매 약정을 각각 확인 | EC2 한 대를 중지하면 계정의 모든 과금이 멈춘다고 생각함 |
자동 할당 공개 IPv4와 EIP가 다른 것은 EC2 중지·시작 시 유지되는 리소스에서 확인할 수 있습니다. 현재 AWS의 공개 IPv4 요금은 사용 중인 주소와 유휴 주소를 모두 대상으로 합니다. 따라서 연결된 EIP도 과금될 수 있습니다. 실제 적용 조건은 VPC 요금의 Public IPv4 Address 항목을 기준으로 봅니다.
EBS는 파일을 얼마나 채웠는지만으로 요금을 판단하지 않습니다. 예를 들어 gp3 저장 비용은 프로비저닝한 용량을 기준으로 하며 추가 성능 설정도 비용에 영향을 줄 수 있습니다. 스냅샷은 별도의 저장 항목이므로 볼륨 크기와 같은 숫자로 계산하지 않습니다. EBS 공식 요금 안내에서 볼륨 종류·저장량·성능 조건을 확인하세요.
Reserved Instances나 Savings Plans를 구매했다면 인스턴스의 실행 상태만으로 약정 비용을 설명할 수 없습니다. 특히 Savings Plans는 일정 기간의 시간당 사용 금액을 약정하는 방식입니다. 이 글의 “중지 중 사용료가 없음”을 약정 결제까지 취소된다는 뜻으로 읽으면 안 됩니다. Savings Plans의 약정 구조를 별도로 확인합니다.

EC2 중지 후 남은 비용을 확인하는 설명용 흐름도입니다. 실제 청구서나 절감 결과를 나타내지 않습니다.
청구 항목에서 남아 있는 리소스로 따라가기
- Bills에서 서비스를 펼칩니다. 선택한 청구 월의 서비스별 비용을 열고, 리전별 상세 항목으로 내려갑니다. 인스턴스를 보던 리전만 확인하지 말고 실제 비용이 표시된 리전을 기준으로 봅니다.
- 상세 항목의 설명·사용량·단위를 적습니다. 컴퓨트 사용인지, 볼륨 저장인지, 공개 IPv4인지 구분합니다. 금액이 비슷하다는 이유로 같은 원인이라고 판단하지 않습니다.
- Cost Explorer를 사용한다면 서비스·리전으로 범위를 좁힙니다. 이후
Usage type으로 나눠 어느 사용 유형이 중지 뒤에도 남았는지 비교합니다. 필드명과 표현은 화면 언어에 따라 다를 수 있습니다. - 그 항목의 리소스를 조회합니다. EBS 저장이면 해당 리전의 볼륨과 연결 상태를, IP 비용이면 남아 있는 주소와 연결 대상을 확인합니다. 스냅샷이면 보관 목록과 용도를 따로 봅니다.
Bills의 서비스·리전별 상세 경로는 청구서 공식 안내, Cost Explorer의 Service·Region·Usage type 구분은 비용 필터와 그룹 기준을 참고할 수 있습니다. 서로 다른 단위의 사용량은 합계 숫자 하나로 비교하지 않습니다.
예를 들어 인스턴스 사용 항목은 줄었는데 저장 항목이 계속 보인다면, 다음 확인 대상은 남은 볼륨입니다. 반대로 다른 서비스의 비용이 보인다면 해당 서비스의 리소스를 확인해야 합니다. “EC2를 껐는데 요금이 나왔다”는 증상을 “어떤 리소스의 어떤 사용량이 남았다”로 바꾸는 것이 여기서의 목표입니다.
중지한 인스턴스가 실제로 stopped인데 새 컴퓨트 사용이 계속 보인다면 같은 계정·리전의 다른 실행 인스턴스도 조회합니다. 특히 Auto Scaling 그룹에 속한 인스턴스를 중지하면 그룹이 이를 비정상으로 판단해 대체 인스턴스를 시작할 수 있습니다. 이 경우에는 그룹의 활동 기록과 새 인스턴스를 대조해야 합니다. 이 동작은 EC2 중지 시 Auto Scaling 처리에 설명돼 있습니다.
비용 원인을 찾은 뒤에도 바로 삭제하지 않을 것
남은 볼륨이 DB나 업로드 파일을 담고 있다면 재시작을 위해 의도적으로 보관한 자원일 수 있습니다. 사용하지 않는 것처럼 보이는 EIP도 도메인이 가리키는 주소일 수 있고, 스냅샷은 복구 계획에 포함돼 있을 수 있습니다. 현재 연결 상태만 보고 필요 없는 자원으로 분류하지 말고, 데이터 용도·복구 계획·다시 실행할 때 필요한 설정을 함께 확인합니다.
보존이 필요하면 그 비용이 운영비에 포함되는 것이 맞는지 판단합니다. 정리하기로 결정했다면 삭제 범위와 이후 복구 방법을 먼저 정해야 합니다. 스냅샷을 추가로 남기는 선택도 저장 비용이 생길 수 있으므로, “백업만 남기면 무료”라고 계산하지 않습니다.
실제 금액을 비교할 때는 같은 리전·기간·사용량 기준을 사용하고, 기본 사용료와 크레딧·할인·세금 적용 후 결제액을 구분합니다. 공개된 달러 단가를 그대로 원화 결제액이나 월 고정비로 바꾸지 않는 편이 정확합니다.
확인이 끝났다고 판단하는 기준
중지 시각, 비교한 청구 기간, 남아 있던 사용 유형, 해당 리소스의 보관 이유가 연결되면 원인 설명이 됩니다. 이후 정리를 했다면 비용 데이터가 반영된 뒤 같은 항목의 사용량이 어떻게 달라졌는지 다시 봅니다. 화면의 월 누적 합계가 그대로라는 이유로 같은 리소스를 반복해서 정리할 필요는 없습니다.
먼저 기간을 맞추고 → 비용 항목을 나누고 → 해당 리소스의 상태를 확인하세요. 이 순서를 지키면 필요한 데이터를 보존하면서도, 중지 후 남은 비용이 무엇인지 설명할 수 있습니다.
'개발일지' 카테고리의 다른 글
| Docker 용량 부족(no space left on device): 삭제 전 확인 순서 (0) | 2026.10.31 |
|---|---|
| 카카오 로그인 이메일이 없을 때: 필수 동의·수집 설정 (0) | 2026.10.31 |
| localStorage 데이터가 다른 기기에서 안 보이는 이유: 주소·브라우저·저장 위치 (0) | 2026.10.30 |
| pip 설치했는데 ModuleNotFoundError: Python 실행 경로 확인 (0) | 2026.10.29 |
| React·Vite 배포 후 새로고침 404: SPA fallback과 base 구분하기 (0) | 2026.10.29 |
