# windows poweshell에서 사용 1 # 실행 1 # 아래 내용 복사 / 붙여 넣기 Write-Host "🔍 AWS 전체 리전 리소스 점검 시작" -ForegroundColor Cyan Write-Host "=================================" # 모든 리전 이름 가져오기 $regions = (aws ec2 describe-regions --query "Regions[].RegionName" --output text).Split("`t") foreach ($region in $regions) { Write-Host "`n📍 Region: $region" -ForegroundColor Yellow Write-Host "-----------------------------" # EC2 $ec2 = aws ec2 describe-instances --region $region --query "Reservations[].Instances[].InstanceId" --output text if ($ec2) { Write-Host "⚠ EC2 Instances: $ec2" } # EBS (Available) $ebs = aws ec2 describe-volumes --region $region --query "Volumes[?State=='available'].VolumeId" --output text if ($ebs) { Write-Host "⚠ Detached EBS: $ebs" -ForegroundColor Red } # Elastic IP $eip = aws ec2 describe-addresses --region $region --query "Addresses[].PublicIp" --output text if ($eip) { Write-Host "⚠ Elastic IPs: $eip" } # NAT Gateway (고과금) $nat = aws ec2 describe-nat-gateways --region $region --query "NatGateways[?State=='available'].NatGatewayId" --output text if ($nat) { Write-Host "🚨 NAT Gateway (고과금): $nat" -ForegroundColor Magenta } # RDS $rds = aws rds describe-db-instances --region $region --query "DBInstances[].DBInstanceIdentifier" --output text if ($rds) { Write-Host "⚠ RDS Instances: $rds" } } Write-Host "`n=================================" Write-Host "✅ 점검 완료" -ForegroundColor Green 2 # 실행 2 # 아래 내용 복사 / 붙여 넣기 # Global Services 에서 남은 리소스 확인 Write-Host "`n🌐 Global Services Check" -ForegroundColor Cyan Write-Host "----------------------" # 1. S3 Buckets (전체 리전 공통) $s3 = aws s3 ls if ($s3) { Write-Host "⚠ S3 버킷 존재:" -ForegroundColor Yellow $s3 # 목록 출력 } # 2. CloudTrail (로깅 설정 확인) $trails = aws cloudtrail describe-trails --query "trailList[].Name" --output text if ($trails) { Write-Host "⚠ CloudTrail Trails: $trails" -ForegroundColor Yellow } else { Write-Host "ℹ 활성화된 CloudTrail이 없습니다." -ForegroundColor Gray } # 3. IAM Users (보안 및 계정 관리) $users = aws iam list-users --query "Users[].UserName" --output text if ($users) { Write-Host "⚠ IAM Users: $users" -ForegroundColor Yellow } # 4. Route53 (도메인 호스팅 존) $zones = aws route53 list-hosted-zones --query "HostedZones[].Name" --output text if ($zones) { Write-Host "⚠ Route53 Hosted Zones: $zones" -ForegroundColor Yellow } Write-Host "`n✅ 글로벌 리소스 점검 완료" -ForegroundColor Green # 실행 3 # 아래 내용 복사 / 붙여 넣기 # 전체 리소스 삭제 스크립트 (주의 , 테스트 계정만 사용하세요) 전체 서비스 삭제 될수 있어요!!! Write-Host "🚨 [위험] AWS 전체 리소스 자동 삭제 스크립트" -ForegroundColor Red Write-Host "이 작업은 되돌릴 수 없으며 모든 데이터가 삭제됩니다." -ForegroundColor Yellow $confirm = Read-Host "정말 실행하려면 'YES'를 입력하세요" if ($confirm -ne "YES") { Write-Host "❌ 취소되었습니다." -ForegroundColor Green exit } # 모든 리전 가져오기 $regions = (aws ec2 describe-regions --query "Regions[].RegionName" --output text).Split("`t") foreach ($region in $regions) { Write-Host "`n🔥 Region: $region 에서 삭제 작업 시작..." -ForegroundColor Magenta Write-Host "-------------------------------------------" # 1. EC2 인스턴스 종료 $ids = aws ec2 describe-instances --region $region --query "Reservations[].Instances[].InstanceId" --output text if ($ids) { Write-Host "Terminating EC2: $ids" aws ec2 terminate-instances --region $region --instance-ids ($ids.Split("`t")) } # 2. Auto Scaling Group 삭제 $asgs = aws autoscaling describe-auto-scaling-groups --region $region --query "AutoScalingGroups[].AutoScalingGroupName" --output text foreach ($asg in $asgs.Split("`t")) { if ($asg) { Write-Host "Deleting ASG: $asg" aws autoscaling update-auto-scaling-group --region $region --auto-scaling-group-name $asg --min-size 0 --max-size 0 --desired-capacity 0 aws autoscaling delete-auto-scaling-group --region $region --auto-scaling-group-name $asg --force-delete } } # 3. NAT Gateway 삭제 (시간이 걸릴 수 있음) $nats = aws ec2 describe-nat-gateways --region $region --query "NatGateways[?State=='available'].NatGatewayId" --output text foreach ($nat in $nats.Split("`t")) { if ($nat) { Write-Host "Deleting NAT Gateway: $nat" aws ec2 delete-nat-gateway --region $region --nat-gateway-id $nat } } # 4. Load Balancer 삭제 $lbs = aws elbv2 describe-load-balancers --region $region --query "LoadBalancers[].LoadBalancerArn" --output text foreach ($lb in $lbs.Split("`t")) { if ($lb) { Write-Host "Deleting Load Balancer: $lb" aws elbv2 delete-load-balancer --region $region --load-balancer-arn $lb } } # 5. RDS 삭제 (최종 스냅샷 미생성) $rdsList = aws rds describe-db-instances --region $region --query "DBInstances[].DBInstanceIdentifier" --output text foreach ($db in $rdsList.Split("`t")) { if ($db) { Write-Host "Deleting RDS: $db" aws rds delete-db-instance --region $region --db-instance-identifier $db --skip-final-snapshot --delete-automated-backups } } # 6. Unused Elastic IP 해제 $eips = aws ec2 describe-addresses --region $region --query "Addresses[].AllocationId" --output text foreach ($eip in $eips.Split("`t")) { if ($eip) { Write-Host "Releasing EIP: $eip" aws ec2 release-address --region $region --allocation-id $eip } } # 7. Lambda 삭제 $funcs = aws lambda list-functions --region $region --query "Functions[].FunctionName" --output text foreach ($func in $funcs.Split("`t")) { if ($func) { Write-Host "Deleting Lambda: $func" aws lambda delete-function --region $region --function-name $func } } } Write-Host "`n=================================" Write-Host "✅ 모든 삭제 명령이 전송되었습니다." -ForegroundColor Green 삭제는 콘솔에서 수동삭제 권고합니다. 지워지면 못 살려요. YES 누르면 모두 삭제됩니다. # 권장은 위 실습1처럼 자동으로 확인 , 삭제는 콘솔에서 수동삭제 권고합니다. 지워지면 못 살려요.