Something went wrong!
Hang in there while we get back on track
Comprehensive AWS Account Audit
Complete audit framework with prioritized resource checklist, ready-to-run discovery commands for 8+ resource types, and cost impact analysis.
Input
What you provide to the skill
I think we have unused AWS resources draining our budget but Iβm not sure what to delete. Can you help me audit our account?
Output
What the skill generates for you
AWS Resource Cleanup Audit
Iβll help you conduct a comprehensive AWS resource audit to identify unused resources and estimate potential savings.
Step 1: Start with High-Impact, Low-Risk Resources
Letβs begin with the easiest wins - resources that are clearly unused and safe to delete:
1. Unattached EBS Volumes π’ SAFE
What to look for: Volumes with state βavailableβ (not attached to any EC2 instance)
Discovery Command:
# Find all unattached EBS volumes
aws ec2 describe-volumes \
--filters Name=status,Values=available \
--query 'Volumes[*].{ID:VolumeId,Size:Size,Type:VolumeType,Created:CreateTime,AZ:AvailabilityZone}' \
--output table
Calculate potential savings:
# Get total unattached GB
aws ec2 describe-volumes \
--filters Name=status,Values=available \
--query 'sum(Volumes[*].Size)' \
--output text
# Multiply result by $0.10 for monthly gp3 cost or $0.125 for gp2
How to interpret: Each unattached volume costs ~$0.10/GB/month (gp3) or ~$0.125/GB/month (gp2). If you have 500GB unattached β ~$50/month ($600/year)
2. Unused Elastic IPs π’ SAFE
What to look for: Elastic IPs not associated with any running instance
Discovery Command:
# Find Elastic IPs not associated with any instance
aws ec2 describe-addresses \
--query 'Addresses[?AssociationId==null].{IP:PublicIp,AllocationId:AllocationId}' \
--output table
Cost: Each unused Elastic IP costs $3.60/month ($43.20/year)
3. Old EBS Snapshots π‘ CAUTION
What to look for: Snapshots older than 90 days that may no longer be needed
Discovery Command:
# Find snapshots older than 90 days
aws ec2 describe-snapshots \
--owner-ids self \
--query 'Snapshots[?StartTime<=`'$(date -u -d '90 days ago' +%Y-%m-%d)'`].{ID:SnapshotId,Size:VolumeSize,Created:StartTime,Description:Description}' \
--output table
Cost: $0.05/GB/month for snapshot storage
4. Stopped EC2 Instances π‘ CAUTION
What to look for: Instances that have been stopped for extended periods
Discovery Command:
# Find stopped EC2 instances
aws ec2 describe-instances \
--filters Name=instance-state-name,Values=stopped \
--query 'Reservations[*].Instances[*].{ID:InstanceId,Type:InstanceType,Name:Tags[?Key==`Name`]|[0].Value,LaunchTime:LaunchTime}' \
--output table
Note: Stopped instances still incur EBS storage costs but not compute costs.
5. Idle Load Balancers π‘ CAUTION
Discovery Command:
# List all Application Load Balancers
aws elbv2 describe-load-balancers \
--query 'LoadBalancers[*].{Name:LoadBalancerName,ARN:LoadBalancerArn,Created:CreatedTime,State:State.Code}' \
--output table
Cost: Each Application Load Balancer costs ~$16-25/month base + data processing fees
6. NAT Gateways π‘ CAUTION
Discovery Command:
# Find all NAT Gateways
aws ec2 describe-nat-gateways \
--query 'NatGateways[?State==`available`].{ID:NatGatewayId,VPC:VpcId,Subnet:SubnetId,Created:CreateTime}' \
--output table
Cost: Each NAT Gateway costs ~$32-45/month + data processing fees
7. Unused RDS Instances π΄ DANGER
Discovery Command:
# List all RDS instances
aws rds describe-db-instances \
--query 'DBInstances[*].{ID:DBInstanceIdentifier,Engine:Engine,Size:DBInstanceClass,Status:DBInstanceStatus,Created:InstanceCreateTime}' \
--output table
Cost: RDS instances can range from $50-500+/month depending on instance type
8. Old AMIs and Associated Snapshots π’ SAFE
Discovery Command:
# Find your custom AMIs
aws ec2 describe-images \
--owners self \
--query 'Images[*].{ID:ImageId,Name:Name,Created:CreationDate,Size:BlockDeviceMappings[0].Ebs.VolumeSize}' \
--output table
Cost: ~$0.05/GB/month for snapshot storage backing the AMIs
Complete Audit Checklist
| Priority | Resource Type | Monthly Cost Impact | Discovery Difficulty |
|βββββ|βββββ|ββββββββββ|ββββββββββ||
| π΄ High | Unused EC2 Instances | $50-500/instance | Easy |
| π΄ High | Unattached EBS Volumes | $10-100/volume | Easy |
| π΄ High | Idle RDS Instances | $50-500/instance | Medium |
| π‘ Medium | Unused Elastic IPs | $3.60/IP | Easy |
| π‘ Medium | Old EBS Snapshots | $5-50/TB | Easy |
| π‘ Medium | Idle Load Balancers | $16-25/month | Medium |
| π‘ Medium | NAT Gateways | $32-45/month | Medium |
| π’ Low | Old Lambda Versions | $0-5 | Easy |
| π’ Low | Unused AMIs | $0.05/GB | Easy |
| π’ Low | CloudWatch Logs | Varies | Easy |
Next Steps
- Specify your AWS region(s): Which region should we audit?
- Run the discovery commands: Start with items 1-3 above
- Share the results: Iβll calculate exact potential savings and provide safe deletion commands
- Production check: Do you have any active production workloads we need to be careful around?
β οΈ Multi-Region Reminder: Check all regions where youβve deployed resources:
aws ec2 describe-regions --query 'Regions[*].RegionName' --output text
About This Skill
Identify and safely clean up unused AWS resources with prioritized audit checklists and ready-to-use CLI commands.
View Skill DetailsMore Examples
EBS Volumes Safe Deletion with Rollback
Complete runbook for safely deleting unattached EBS volumes including safety checklist, snapshot backup, bulk deletion commands, and rollback procedures.
Multi-Region Cost Spike Investigation
Systematic investigation framework for identifying hidden AWS costs across multiple regions, with 7 common culprits and ready-to-run discovery commands.