최근에 개발부터 배포까지 모든 과정을 혼자 담당한 프로젝트가 있었다.
배포한지 약 한달 정도 되었을 때 쯤 aws에서 부터 비용 관련 메일을 받았다.
프리티어라서 당연히 요금이 발생하지 않을 줄만 알았지만 충격적이게도 약 8달러 정도가 청구되었다.
사실 금액 자체는 그렇게 크지는 않지만,
혹시나 본인이 잘못 설정한게 있어서 앞으로 요금이 커지지는 않을지 걱정이 되었다.
그래서 요금이 발생하는 원인을 확인하고 문제를 해결했으나 그 과정에서 수많은 삽질이 있었다.
오늘은 aws 요금 발생 해결기를 공유하도록 하겠다.
우선 요금 청구서는 아래와 같은 과정을 통해 확인할 수 있다.
우측 상단 닉네임 클릭 > 결제 및 비용 관리 > 왼쪽 사이드에 청구서
이렇게 기본적인 청구 정보가 나오고 하단을 통해 서비스별 요금 상세 정보를 확인할 수 있다.
상세정보를 확인해보니 Virtual Private Cloud(VPC)로 인해 요금이 발생했음을 확인했다.
'$0.005 per In-use public IPv4 address per hour'
조금 더 자세히 확인해보면 ip주소로 인해 요금이 청구되었음을 알 수 있다.
ip주소는 무료가 아니였나?
그래서 프리티어가 요금이 발생하는 경우에 대해 조사했다.
1) EC2
- t2.micro 또는 t3.micro 인스턴스 타입만 프리티어
- 월별 750시간까지 무료 (인스턴스를 하나만 한달 내내 돌려도 남음)
- EC2 인스턴스가 2개가 아닐경우 거의 요금 발생 안함
2) ELB
- Application Load Balancer 월별 750시간까지 무료
3) Elastic IP
- ip 1개 무료
4) Lambda
- 월별 무료 요청 1,000,000건까지 무료
추가 조항이 더 있지만 간단하게 이정도만 정리하겠다.
그러나 본인은 어떤 항목도 벗어나지 않았는데 요금이 발생한 이유를 이해하지 못했다.
추가로 구글링을 통해 아래와 같은 정보를 확인했다.
공지 – AWS Public IPv4 주소 요금 변경 및 Public IP Insights 기능 출시 | Amazon Web Services
AWS에서 퍼블릭(Public) IPv4 주소에 대한 새로운 요금이 도입됩니다. 2024년 2월 1일부터 서비스 연결 여부에 관계없이 모든 퍼블릭 IPv4 주소에 대해 시간당 IP당 0.005 USD의 요금이 부과됩니다. 계정에
aws.amazon.com
요약하자면 24년 2월 1일 이후로 IPv4의 모든 주소에 대해 시간당 IP당 0.005 USD를 부과한다는 것이였다.
그래서 나는 이 때 뭔가 나도 모르게 추가로 ip를 할당 받은게 있음을 확신했다.
aws에서는 Amazon VPC IP Address Manager라는 서비스를 제공하는데,
해당 서비스를 통해 본인이 발급받은 ip정보를 확인할 수 있다.
Amazon VPC IP Address Manager를 처음 이용할 경우 IPAM을 생성하여 접속해야 하는데,
이또한 프리티어로 IPAM을 생성해야한다.
IPAM을 생성 후 일정 시간이 지나면 아래와 같이 ip 현황을 확인할 수 있다.
(본인은 한 15분 걸림)
예상대로 ip가 총 3개 할당 되어 있는 것을 확인했다.
하나는 EC2에서 발급받은 ip이고 나머지는 Load balancer 즉 ALB로 인해 발생한 것이였다.
배포 할 당시 구글링을 통해 배포 방법을 공부했었는데
이 당시 봤던 게시물들이 대부분 ACM을 통해 ALB와 연결해서 https를 개방했었기 때문에
당연히 이렇게 하는줄 알고 따라만 하다 생긴 문제였다.
좀 더 알아보고 공부한 후에 했었어야 했는데 후회가 되었다.
뭐 어쩌겠나
일단 요금이 더이상 발생하지 않도록 하는게 급선무이기 때문에
Load balancer를 제거하기로 했다.
현재 배포한 서비스는 개인 포트폴리오 사이트이다.
데이터도 대부분 정적으로 이루어져있기 때문에 Load balancer를 사용할 필요는 없다.
EC2 > 로드 밸런서로 이동한 후 현재 생성되어 있는 로드 밸런서를 아래와 같이 삭제했다.
ACM과 ALB를 통해 도메인을 연결하고 https를 개방했기 때문에
아마 로드 밸런서를 삭제하면 사이트에 들어가지 않을 것이라고 예상된다.
삭제를 하고 몇 분 지나니 ip가 하나만 남은 것을 확인할 수 있었다.
우선 요금 문제는 여기서 해결 되었지만 다른 문제가 예상대로 발생했다.
" DNS_PROBE_FINISHED_NXDOMAIN "
해당 오류가 발생하며 사이트에 접속 되지 않았다.
이 문제는 Route 53 도메인 A레코드가 로드밸런서와 연결되어 있었기 때문에 발생한 오류이다.
A레코드의 라우팅 대상을 기존의 퍼블릭 ip로 수정해주면 쉽게 해결할 수 있다.
Route 53 > 호스팅 영역 > 세부 정보
위와 같이 이동 후 A 레코드를 편집해주면 된다.
값 칸에 퍼블릭 ip를 입력해주고 저장을 누르면 된다.
우선 접속이 되도록 만들었으나 다음으로는 https로 접속이 되지 않는 문제가 발생했다.
현재 nginx를 사용하고 있었기 때문에 해당 문제는 certbot으로 쉽게 인해 해결할 수 있었다.
certbot의 자세한 사용 방법은 다음 게시물을 통해 업로드 하도록 하겠다.
이렇게 오늘은 aws 프리티어에서 추가 요금이 나오는 원인을 파악하고 해결해봤다.
요금 문제를 해결하는 과정에서 로드밸런서를 삭제하고 사이트에 들어가지지 않아서
한참을 삽질 했지만 결국에 해결하게 되어서 너무 뿌듯하다.
결과적으로 앞으로 요금도 발생하지 않게 되고 사이트도 문제 없이 접속 할 수 있게 되었다.
오늘 생긴 문제의 원인은 두가지이다.
1. 프리티어 규정을 정확하게 확인해보지 않음 (요금 발생 규정)
2. 제대로 공부하지 않은 탓에 배포시 불필요한 서비스 사용 (ALB)
다음부터 새로운 서비스를 이용할 때는 규정을 잘 확인해보도록 하고,
무작정 따라하기 보다는 이것을 왜 사용하는지 왜 이렇게 하는지에 대해 정확히 알고 사용 해야겠다.
'Deploy' 카테고리의 다른 글
[AWS] EC2를 통해 Django 배포하기 - 2 (가비아, nginx 도메인, https 적용, certbot) (2) | 2025.02.02 |
---|---|
[AWS] EC2를 통해 Django 배포하기 - 1 (0) | 2025.01.31 |
[Nginx] nginx에서 certbot 통해 https 적용하기 (0) | 2025.01.31 |