AWS RDS 미사용 파라미터 확인 및 정리 스크립트
DBA가 없는 환경에서 누군가 DB를 사용하기 위해 파라미터를 많이 만들어두고 정리를 안하는 경우가 꽤 많습니다.
사용하지 않는 RDS 파라미터 그룹을 확인하고 정리하는 스크립트입니다.
RDS 파라미터 그룹은 사용중이면 삭제가 되지 않기 때문에 큰 이슈없이 해당 내용을 삭제해도 문제가 되는 경우가 잘 없습니다.
AWS CLI를 이용한 간단한 Bash 스크립트입니다.
default 가 들어가 파라미터 그룹은 삭제하지 않습니다.
#!/bin/bash # 사용법 함수 정의 usage() { echo "Usage: $0 [-p|--profile PROFILE_NAME]" echo "Options:" echo " -p, --profile AWS 프로파일명 (선택사항, 미입력시 default 프로파일 사용)" echo " -h, --help 도움말 표시" exit 1 } # 기본값 설정 PROFILE_OPT="" # 명령행 인수 처리 while [[ $# -gt 0 ]]; do case $1 in -p|--profile) if [ -n "$2" ]; then PROFILE_OPT="--profile $2" shift 2 else echo "Error: --profile 옵션에 값이 필요합니다" usage fi ;; -h|--help) usage ;; *) echo "알 수 없는 옵션: $1" usage ;; esac done # 1. 모든 인스턴스 파라미터 그룹 목록 가져오기 instance_parameter_groups=$(aws rds describe-db-parameter-groups $PROFILE_OPT --query 'DBParameterGroups[*].DBParameterGroupName' --output text) # 2. 모든 클러스터 파라미터 그룹 목록 가져오기 cluster_parameter_groups=$(aws rds describe-db-cluster-parameter-groups $PROFILE_OPT --query 'DBClusterParameterGroups[*].DBClusterParameterGroupName' --output text) # 3. 모든 파라미터 그룹 합치기 all_parameter_groups="$instance_parameter_groups $cluster_parameter_groups" # 4. 현재 사용 중인 인스턴스 파라미터 그룹 목록 가져오기 used_instance_parameter_groups=$(aws rds describe-db-instances $PROFILE_OPT --query 'DBInstances[*].DBParameterGroups[*].DBParameterGroupName' --output text) # 5. 현재 사용 중인 클러스터 파라미터 그룹 목록 가져오기 used_cluster_parameter_groups=$(aws rds describe-db-clusters $PROFILE_OPT --query 'DBClusters[*].DBClusterParameterGroup' --output text) # 6. 사용 중인 모든 파라미터 그룹 합치기 all_used_parameter_groups="$used_instance_parameter_groups $used_cluster_parameter_groups" # 7. 결과가 없는 경우 처리 if [ -z "$all_parameter_groups" ]; then echo "파라미터 그룹을 찾을 수 없습니다." exit 1 fi # 8. 미사용 파라미터 그룹 식별 unused_parameter_groups=() for group in $all_parameter_groups; do if ! echo "$group" | grep -qi "default" && ! echo "$all_used_parameter_groups" | grep -w -q "$group"; then unused_parameter_groups+=("$group") fi done # 9. 결과가 없는 경우 처리 if [ ${#unused_parameter_groups[@]} -eq 0 ]; then echo "미사용 파라미터 그룹이 없습니다." exit 0 fi # 10. 미사용 파라미터 그룹 목록 출력 echo "미사용 파라미터 그룹 목록:" echo "------------------------" for group in "${unused_parameter_groups[@]}"; do echo "- $group" done echo "------------------------" echo "총 ${#unused_parameter_groups[@]}개의 미사용 파라미터 그룹이 발견되었습니다." # 11. 삭제 여부 확인 read -p "이 미사용 파라미터 그룹들을 삭제하시겠습니까? (yes/no): " confirm if [[ "$confirm" == "yes" ]]; then echo "미사용 파라미터 그룹을 삭제합니다..." for group in "${unused_parameter_groups[@]}"; do # 그룹이 인스턴스 파라미터 그룹인지 확인 if echo "$instance_parameter_groups" | grep -w -q "$group"; then aws rds delete-db-parameter-group $PROFILE_OPT --db-parameter-group-name "$group" echo "인스턴스 파라미터 그룹 '$group' 삭제 완료." fi # 그룹이 클러스터 파라미터 그룹인지 확인 if echo "$cluster_parameter_groups" | grep -w -q "$group"; then aws rds delete-db-cluster-parameter-group $PROFILE_OPT --db-cluster-parameter-group-name "$group" echo "클러스터 파라미터 그룹 '$group' 삭제 완료." fi done echo "모든 미사용 파라미터 그룹이 삭제되었습니다." else echo "삭제를 취소하였습니다." fi
유저의 터미널 환경에서
$ chmod 755 check_rds_parameter_groups.sh $ ./check_rds_parameter_groups.sh --profile <aws profile>
이렇게 실행하면 됩니다.
aws configure
설정을 통해 미리 프로파일은 설정이 되어 있어야합니다.
파라미터 그룹 삭제시 항상 주의를 요하며, 해당 스크립트로 삭제를 하여 발생한 문제는 제가 책임을 지지 않으니 사용시 잘 체크하시기 바랍니다.
최신 댓글