WindsomeProject는 AWS RDS 서비스를 이용하여 데이터베이스를 관리하였다.
그런데 분명 AWS 프리티어를 사용중이고 과금이 되지 않도록 설정했는데 과금이 되고 있었다.
청구서를 보면 0.005 per in-use public IPv4 address per hour, $0.005 per Idle public IPv4 address per hour 항목에서 과금이 발생되고 있다.
확인해 보니 프리티어로 제공되는 1개의 무료 퍼블릭 IPv4 주소를 제외한 모든 public IPv4 주소에 대해 시간당 IP당 0.005 USD의 요금이 부과된다는 사실을 알았다.
현재 사용중인 public IP를 조회한 결과, 2개의 public IP가 사용되고 있었다.
1개는 프리티어 EC2에 부여된 주소이고, 나머지 1개는 RDS에 할당된 주소였다.
RDS 인스턴스를 생성할 때, 로컬 PC에서 MysqlWorkbench를 통해 RDS에 연결하기 위해 퍼블릭 액세스를 "예"로 설정한 것이 문제였다.
만약 “예"를 택할 경우 새로운 RDS의 인스턴스에는 자동으로 public IPv4 주소가 할당되며 곧 비용청구로 이어진다.
기존에는 RDS 인스턴스를 생성할 때, 로컬에서 MySQL 워크벤치나 IntelliJ의 툴을 사용하여 RDS에 접속할 수 있게 하기 위해 "EC2 컴퓨팅 리소스에 연결 안 함" 옵션을 선택하고, 퍼블릭 액세스를 "예"로 설정하였다.
현재는 과금을 피하기 위해 "EC2 컴퓨팅 리소스에 연결" 옵션을 선택하여 RDS 인스턴스를 EC2 인스턴스와 연결하여 해당 EC2 인스턴스에서만 RDS에 접근할 수 있도록 설정하였다.
RDS를 생성 후 '연결된 컴퓨팅 리소스' 카테고리에서 연결된 EC2 인스턴스를 확인할 수 있다.
RDS 보안 그룹은 EC2 보안 그룹이랑 별도로 관리하지 않고 같은 곳에서 관리하기위해 RDS의 보안그룹에 ec2에서 사용 중인 보안그룹 ID를 인바운드 그룹에 추가해주었다.
연결된 EC2 인스턴스에서 RDS로 접속을 시도해 보면, 문제 없이 접속가능한 것을 확인할 수 있다.
참조