code-dumps/aws/cost-optimization.sh

31 lines
1.2 KiB
Bash
Raw Normal View History

2022-12-14 19:27:04 +08:00
#!/bin/bash
# Work in progress. This script does not work with organization. SP rouutines have not been written.
# Create sqlite database
rm -f co.db
sqlite3 co.db 'create table instances(type varchar(20),running int, ri int);'
# Count instance types in region
echo "Getting list of Ec2 instances..."
aws ec2 describe-instances --query 'Reservations[].Instances[].InstanceType' --filter Name=instance-state-name,Values=running --output text | tr '\t' '\n' | sort | uniq -c | while read count type; do
sqlite3 co.db "insert into instances values(\"$type\", \"$count\",0);"
done
# List RI in region
echo "Getting list of RI..."
aws ec2 describe-reserved-instances --query ReservedInstances[].[InstanceCount,InstanceType] --output text | while read count type; do
# echo sqlite3 co.db "update instances set ri = \"$count\" where type = \"$type\";"
sqlite3 co.db "update instances set ri = \"$count\" where type = \"$type\";"
done
# List ISP
echo "Getting ISP..."
aws savingsplans describe-savings-plans
# List CSP
echo "Getting CSP..."
aws savingsplans describe-savings-plans
# List table
sqlite3 -header -column co.db "select type, running, ri, running - ri as candidates from instances;"