[AWS] S3, Lambda 프리티어로 사용하는데 비용 발생한 이유
문제
우선 1400개에 달하는 요청이 들어왔다며 요금 통지서가 발생한다.
금액은 높지 않았지만 애초에 홈페이지 주소를 어디에 공개하지를 않았는데 이렇게 많은 요청이 들어온다는 건 이상했다.
원인
그래서 찾아보니 AWS 내부 서비스 간 통신, 헬스체크, 자동화된 스크립트, 잘못된 설정 등으로 인해 의도치 않은 대량 요청이 발생할 수 있고, 특히, CloudFront 와 연동된 경우에는 CloudFront 가 오리진에 헬스체크나 프리페칭 등으로 요청을 보낼 수 있으며, 이 트래픽도 WAF 에서 감지되어 요금이 부과될 수 있다고 한다.
WAF는 실제 외부에서 들어온 요청뿐 아니라, CloudFront, ALB 등 AWS 리소스가 받는 모든 요청을 검사하므로, 내부 트래픽도 모두 요금 대상이라는 이야기다.
그래서 요금 청구서를 봤더니 WAF request 자체는 요금이 발생하지 않았지만 Rule 와 Web ACL 에서 요금이 발생한 것을 확인할 수 있다.
해결 방법
WAF 를 사용하는 것은 무료라고 생각했는데 요청횟수를 체킹하는 것은 무료지만 다른 서비스는 유료였다는 사실을 몰랐다.
- Cloudfront 에서 SSL을 잠시 None 으로 변경
- Web ACL 의 룰을 삭제
- 연관 Cloudfront 를 해제
- Web ACL 를 삭제
- 그리고 다시 Cloudfront 의 SSL 을 해당 버킷으로 연결
위 순서대로 해주면 정상적으로 동작하는 것을 확인할수 있다.
로그를 확인하는 것도 전부 비용이 들어가는 거라 해당 서비스를 이용하지 않고 있던 나는 일단 WAF 를 제거하고 지켜보기로 했다. 1억 요청이 들어와도 7만원 정도의 비용이 발생할 것으로 예측되니 괜찮지 않을까... 생각해본다.
결과
한 달이 지나고 나니 요금이 발생하지 않았다!
추가적으로 앞으로 요금이 100원 이상 나오면 메일이 오게끔 신청해두었다. 이건 무료다!