Loading...
Loading...
Analyze and optimize AWS costs with recommendations for Reserved Instances, right-sizing, and resource cleanup. Use when reducing AWS spending, analyzing costs, or optimizing cloud infrastructure expenses.
npx skill4agent add armanzeroeight/fastagent-plugins aws-cost-optimizer# Get CloudWatch metrics
aws cloudwatch get-metric-statistics \
--namespace AWS/EC2 \
--metric-name CPUUtilization \
--dimensions Name=InstanceId,Value=i-1234567890abcdef0 \
--start-time 2024-01-01T00:00:00Z \
--end-time 2024-01-31T23:59:59Z \
--period 3600 \
--statistics Average# Find stopped instances
aws ec2 describe-instances \
--filters "Name=instance-state-name,Values=stopped" \
--query 'Reservations[].Instances[].[InstanceId,Tags[?Key==`Name`].Value|[0]]'
# Terminate if not needed
aws ec2 terminate-instances --instance-ids i-1234567890abcdef0{
"Rules": [{
"Id": "Archive old data",
"Status": "Enabled",
"Transitions": [
{
"Days": 30,
"StorageClass": "STANDARD_IA"
},
{
"Days": 90,
"StorageClass": "GLACIER"
}
],
"Expiration": {
"Days": 365
}
}]
}aws s3api list-multipart-uploads --bucket my-bucket
# Set lifecycle rule to abort after 7 days# Get bucket size
aws s3 ls s3://my-bucket --recursive --summarize# Stop RDS instance
aws rds stop-db-instance --db-instance-identifier mydb
# Start when needed
aws rds start-db-instance --db-instance-identifier mydb# List snapshots
aws rds describe-db-snapshots --query 'DBSnapshots[?SnapshotCreateTime<`2023-01-01`]'
# Delete old snapshots
aws rds delete-db-snapshot --db-snapshot-identifier snapshot-id# Create S3 VPC endpoint (no data transfer charges)
aws ec2 create-vpc-endpoint \
--vpc-id vpc-12345678 \
--service-name com.amazonaws.us-east-1.s3 \
--route-table-ids rtb-12345678# Find unattached volumes
aws ec2 describe-volumes \
--filters "Name=status,Values=available" \
--query 'Volumes[].[VolumeId,Size,VolumeType]'
# Delete if not needed
aws ec2 delete-volume --volume-id vol-1234567890abcdef0# List old snapshots
aws ec2 describe-snapshots --owner-ids self \
--query 'Snapshots[?StartTime<`2023-01-01`]'
# Delete
aws ec2 delete-snapshot --snapshot-id snap-1234567890abcdef0# Get Lambda metrics
aws cloudwatch get-metric-statistics \
--namespace AWS/Lambda \
--metric-name Invocations \
--dimensions Name=FunctionName,Value=my-function \
--start-time 2024-01-01T00:00:00Z \
--end-time 2024-01-31T23:59:59Z \
--period 86400 \
--statistics Sum# Set log retention to 7 days
aws logs put-retention-policy \
--log-group-name /aws/lambda/my-function \
--retention-in-days 7# List log groups
aws logs describe-log-groups
# Delete
aws logs delete-log-group --log-group-name /aws/lambda/old-functionaws ec2 describe-addresses \
--query 'Addresses[?AssociationId==null]'aws elbv2 describe-load-balancers
aws elbv2 describe-target-health --target-group-arn arn# Check CloudWatch metrics for BytesOutToDestination# Create budget
aws budgets create-budget \
--account-id 123456789012 \
--budget file://budget.json