1 해당 EC2에서 CLI로 aws configute로 권한주기 aws configure AWS Access Key ID [None]: AKIAU6GD27X AWS Secret Access Key [None]: dBIAaEjtc9dQbzLfQYio5+JQ Default region name [None]: ap-northeast-2 Default output format [None]: <엔터> aws s3 ls 2) # AWS 전체 리전 리소스 점검 시작 #!/bin/bash echo "🔍 AWS 전체 리전 리소스 점검 시작" echo "=================================" REGIONS=$(aws ec2 describe-regions --query "Regions[].RegionName" --output text) for REGION in $REGIONS; do echo "" echo "📍 Region: $REGION" echo "-----------------------------" # EC2 EC2=$(aws ec2 describe-instances --region $REGION \ --query "Reservations[].Instances[].InstanceId" --output text) [ -n "$EC2" ] && echo "⚠ EC2 Instances: $EC2" # EBS (Detached) EBS=$(aws ec2 describe-volumes --region $REGION \ --query "Volumes[?State=='available'].VolumeId" --output text) [ -n "$EBS" ] && echo "⚠ Detached EBS: $EBS" # Elastic IP EIP=$(aws ec2 describe-addresses --region $REGION \ --query "Addresses[].PublicIp" --output text) [ -n "$EIP" ] && echo "⚠ Elastic IPs: $EIP" # Load Balancer LB=$(aws elbv2 describe-load-balancers --region $REGION \ --query "LoadBalancers[].LoadBalancerName" --output text 2>/dev/null) [ -n "$LB" ] && echo "⚠ Load Balancers: $LB" # NAT Gateway NAT=$(aws ec2 describe-nat-gateways --region $REGION \ --query "NatGateways[?State=='available'].NatGatewayId" --output text) [ -n "$NAT" ] && echo "🚨 NAT Gateway (고과금): $NAT" # RDS RDS=$(aws rds describe-db-instances --region $REGION \ --query "DBInstances[].DBInstanceIdentifier" --output text 2>/dev/null) [ -n "$RDS" ] && echo "⚠ RDS Instances: $RDS" # Lambda LAMBDA=$(aws lambda list-functions --region $REGION \ --query "Functions[].FunctionName" --output text) [ -n "$LAMBDA" ] && echo "ℹ Lambda Functions: $LAMBDA" # EFS EFS=$(aws efs describe-file-systems --region $REGION \ --query "FileSystems[].FileSystemId" --output text 2>/dev/null) [ -n "$EFS" ] && echo "⚠ EFS: $EFS" # API Gateway API=$(aws apigateway get-rest-apis --region $REGION \ --query "items[].name" --output text 2>/dev/null) [ -n "$API" ] && echo "⚠ API Gateway: $API" done echo "" echo "=================================" echo "✅ 점검 완료" 3 ) # Global Services 에서 남은 리소스 확인 echo "Global Services Check" echo "----------------------" # S3 aws s3 ls && echo "⚠ S3 버킷 존재" # CloudTrail aws cloudtrail describe-trails --query "trailList[].Name" --output text # IAM Users aws iam list-users --query "Users[].UserName" --output text # Route53 aws route53 list-hosted-zones --query "HostedZones[].Name" --output text # 결과 해석 가이드 ⚠ 표시 → 과금 가능 리소스 🚨 NAT Gateway → 즉시 삭제 권장 아무 출력 없음 → 해당 리전은 안전 ---------------------------- 4) # 전체 리소스 삭제 스크립트 (주의 , 테스트 계정만 사용하세요) 전체 서비스 삭제 될수 있어요!!! #!/bin/bash echo "🚨 AWS 전체 리소스 자동 삭제 스크립트" echo "이 작업은 되돌릴 수 없습니다." read -p "정말 실행하려면 YES 를 입력하세요: " CONFIRM if [ "$CONFIRM" != "YES" ]; then echo "❌ 취소됨" exit 1 fi REGIONS=$(aws ec2 describe-regions --query "Regions[].RegionName" --output text) for REGION in $REGIONS; do echo "" echo "🔥 Region: $REGION" echo "-----------------------------" # EC2 종료 IDS=$(aws ec2 describe-instances --region $REGION \ --query "Reservations[].Instances[].InstanceId" --output text) [ -n "$IDS" ] && aws ec2 terminate-instances --region $REGION --instance-ids $IDS # Auto Scaling Group 삭제 ASG=$(aws autoscaling describe-auto-scaling-groups --region $REGION \ --query "AutoScalingGroups[].AutoScalingGroupName" --output text) for A in $ASG; do aws autoscaling update-auto-scaling-group --region $REGION \ --auto-scaling-group-name $A --min-size 0 --max-size 0 --desired-capacity 0 aws autoscaling delete-auto-scaling-group --region $REGION \ --auto-scaling-group-name $A --force-delete done # NAT Gateway 삭제 NAT=$(aws ec2 describe-nat-gateways --region $REGION \ --query "NatGateways[?State=='available'].NatGatewayId" --output text) for N in $NAT; do aws ec2 delete-nat-gateway --region $REGION --nat-gateway-id $N done # Load Balancer 삭제 LBS=$(aws elbv2 describe-load-balancers --region $REGION \ --query "LoadBalancers[].LoadBalancerArn" --output text 2>/dev/null) for LB in $LBS; do aws elbv2 delete-load-balancer --region $REGION --load-balancer-arn $LB done # RDS 삭제 (최종 스냅샷 없음) DBS=$(aws rds describe-db-instances --region $REGION \ --query "DBInstances[].DBInstanceIdentifier" --output text 2>/dev/null) for DB in $DBS; do aws rds delete-db-instance --region $REGION \ --db-instance-identifier $DB \ --skip-final-snapshot done # EBS (Detached) VOLS=$(aws ec2 describe-volumes --region $REGION \ --query "Volumes[?State=='available'].VolumeId" --output text) for V in $VOLS; do aws ec2 delete-volume --region $REGION --volume-id $V done # Elastic IP EIPS=$(aws ec2 describe-addresses --region $REGION \ --query "Addresses[].AllocationId" --output text) for E in $EIPS; do aws ec2 release-address --region $REGION --allocation-id $E done # Lambda FUNCS=$(aws lambda list-functions --region $REGION \ --query "Functions[].FunctionName" --output text) for F in $FUNCS; do aws lambda delete-function --region $REGION --function-name $F done # EFS EFS=$(aws efs describe-file-systems --region $REGION \ --query "FileSystems[].FileSystemId" --output text 2>/dev/null) for FS in $EFS; do aws efs delete-file-system --region $REGION --file-system-id $FS done done 5) # 글로벌 서비스 (수동 확인 권장) # 글로벌 서비스 (수동 확인 권장) # 아래는 자동 삭제를 일부러 포함하지 않았습니다 (사고 방지) # S3 (버킷 내부 데이터까지 완전 삭제 필요) aws s3 ls # Route 53 aws route53 list-hosted-zones # IAM aws iam list-users # CloudTrail aws cloudtrail describe-trails 6) 실행 후: Billing → Bills Cost Explorer (1~2일 후) 감사합니다.