-
-
Save ctranstrum/7d3b5c90e6ce131c91754bc8f7c1c4bd to your computer and use it in GitHub Desktop.
AWS shortcuts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
_Name_Tag_='Tags[?Key==`Name`].Value | [0]' | |
_Env_Tag_='Tags[?Key==`Environment`].Value | [0]' | |
_Project_Tag_='Tags[?Key==`Project`].Value | [0]' | |
_Owner_Tag_='Tags[?Key==`Owner`].Value | [0]' | |
_App_Tag_='Tags[?Key==`ApplicationGroup`].Value | [0]' | |
ami () { | |
aws ec2 describe-images --image-id $1 --output json | |
} | |
amilist () { | |
if [[ $1 =~ win ]]; then | |
aws ec2 describe-images --filters "Name=platform,Values=windows" "Name=virtualization-type,Values=hvm" --owners self amazon --query "Images[].[ImageId, Name]" \ | |
--output text | sort -f -k 2 | |
else | |
aws ec2 describe-images --filters "Name=virtualization-type,Values=hvm" --owners self amazon --query "Images[].[ImageId, Description]" \ | |
--output text | grep -v Windows | grep -v None | sort -f -k 2 | |
fi | |
} | |
ec2list () { | |
aws ec2 describe-instances --query "Reservations[].Instances[].[$_Name_Tag_, InstanceId, PrivateIpAddress, ImageId, $_Env_Tag_, $_Owner_Tag_, $_Owner_Tag_, $_App_Tag_]" \ | |
--output text | sort -f | |
} | |
ec2din () { | |
if [[ $1 =~ ^i- ]]; then | |
aws ec2 describe-instances --instance-id "$@" | |
else | |
aws ec2 describe-instances --filter "Name=tag:Name,Values=$1" "${@:2}" | |
fi | |
} | |
ec2find () { | |
if [[ $1 =~ ^i- ]]; then | |
aws ec2 describe-instances --instance-id "$1" \ | |
--query "Reservations[].Instances[].[InstanceId, $_Name_Tag_, PrivateIpAddress, ImageId, $_Env_Tag_, $_Owner_Tag_, $_Project_Tag_, $_App_Tag_]" \ | |
--output text | sort -f | |
else | |
aws ec2 describe-instances --filter "Name=tag:Name,Values=*$1*" \ | |
--query "Reservations[].Instances[].[$_Name_Tag_, InstanceId, PrivateIpAddress, ImageId, $_Env_Tag_, $_Owner_Tag_, $_Project_Tag_, $_App_Tag_]" \ | |
--output text | sort -f | |
fi | |
} | |
ec2tags () { | |
aws ec2 describe-instances --query 'Reservations[].Instances[].Tags[].[Key]' \ | |
--output text | sort | uniq -c | |
} | |
ec2tagvals () { | |
aws ec2 describe-instances --filter "Name=tag-key,Values=$1" \ | |
--query "Reservations[].Instances[].[Tags[?Key==\`$1\`].Value]" \ | |
--output text | sort | uniq -c | |
} | |
ec2stopped () { | |
aws ec2 describe-instances --filter 'Name=instance-state-name,Values=shutting-down,stopping,stopped' \ | |
--query "Reservations[].Instances[].[$_Name_Tag_, InstanceId, InstanceType, State.Name, StateReason.Message]" \ | |
--output text | sort -f | |
} | |
ec2running () { | |
aws ec2 describe-instances --filter 'Name=instance-state-name,Values=running' \ | |
--query "Reservations[].Instances[].[$_Name_Tag_, InstanceId, InstanceType, LaunchTime, StateReason.Message" \ | |
--output text | sort -f | |
} | |
cwmetrics () { | |
if [[ $1 =~ ^i- ]]; then | |
aws cloudwatch list-metrics --dimensions Name=InstanceId,Value=$1 --output text --query "Metrics[].[MetricName]" | sort | |
else | |
echo Missing instance-id | |
fi | |
} | |
cwcpu () { | |
if [[ $1 =~ ^i- ]]; then | |
hour=`date -u -v-1H +%FT%TZ` | |
now=`date -u +%FT%TZ` | |
min=`aws cloudwatch get-metric-statistics --namespace 'AWS/EC2' --metric-name CPUUtilization --dimensions Name=InstanceId,Value=$1 --start-time $hour --end-time $now --period 3600 --statistics Minimum --query 'Datapoints[].[Minimum]' --output text` | |
avg=`aws cloudwatch get-metric-statistics --namespace 'AWS/EC2' --metric-name CPUUtilization --dimensions Name=InstanceId,Value=$1 --start-time $hour --end-time $now --period 3600 --statistics Average --query 'Datapoints[].[Average]' --output text` | |
max=`aws cloudwatch get-metric-statistics --namespace 'AWS/EC2' --metric-name CPUUtilization --dimensions Name=InstanceId,Value=$1 --start-time $hour --end-time $now --period 3600 --statistics Maximum --query 'Datapoints[].[Maximum]' --output text` | |
echo Last hour CPU usage min: $min% / avg: $avg% / max: $max% | |
else | |
echo Missing instance-id | |
fi | |
} | |
cwnetwork () { | |
if [[ $1 =~ ^i- ]]; then | |
hour=`date -u -v-1H +%FT%TZ` | |
now=`date -u +%FT%TZ` | |
in=`aws cloudwatch get-metric-statistics --namespace AWS/EC2 --metric-name NetworkIn --dimensions Name=InstanceId,Value=$1 --start-time $hour --end-time $now --period 3600 --statistics Maximum --query 'Datapoints[].[Maximum]' --output text` | |
out=`aws cloudwatch get-metric-statistics --namespace AWS/EC2 --metric-name NetworkOut --dimensions Name=InstanceId,Value=$1 --start-time $hour --end-time $now --period 3600 --statistics Maximum --query 'Datapoints[].[Maximum]' --output text` | |
echo Last hour network traffic max In: $in bytes / Out: $out bytes | |
else | |
echo Missing instance-id | |
fi | |
} | |
cwstatus () { | |
if [[ $1 =~ ^i- ]]; then | |
hour=`date -u -v-1H +%FT%TZ` | |
now=`date -u +%FT%TZ` | |
status=`aws cloudwatch get-metric-statistics --namespace AWS/EC2 --metric-name StatusCheckFailed --dimension Name=InstanceId,Value=$1 --start-time $hour --end-time $now --period 3600 --statistics Maximum --query 'Datapoints[].[Maximum]' --output text` | |
if [[ $status = '0.0' ]]; then | |
echo Last hour Status: green | |
else | |
echo Last hour Status Check Failures at: | |
aws cloudwatch get-metric-statistics --namespace AWS/EC2 --metric-name StatusCheckFailed --dimension Name=InstanceId,Value=$1 --start-time $hour --end-time $now --period 60 --statistics Maximum --query 'Datapoints[].[Timestamp, Maximum]' --output text | egrep -v '\t0.0$' | awk '{print $1}' | sort | |
fi | |
else | |
echo Missing instance-id | |
fi | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment