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

설정을 통해 미리 프로파일은 설정이 되어 있어야합니다.

파라미터 그룹 삭제시 항상 주의를 요하며, 해당 스크립트로 삭제를 하여 발생한 문제는 제가 책임을 지지 않으니 사용시 잘 체크하시기 바랍니다.

소셜 미디어로 공유하기

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.