2019.11.06
STAFF BLOG
スタッフブログ
TECHNICAL
テクログ
# aws-cliコマンド
さくっと、EC2のインスタンスの情報をcliで取りたいときのコマンドです。
##EC2のタグについてるサーバの名前を知りたい時
aws ec2 describe-instances | jq -r ".Reservations[] .Instances[] .Tags[]|select(.Key=="Name")|.Value"
#ステータスがrunning状態のTagsがKey=Nameのをインスタンスを取得
aws ec2 describe-instances --filter "Name=instance-state-name,Values=running" | jq -r ".Reservations[] .Instances[] .Tags[]|select(.Key=="Name")|.Value"
#running状態かつ、 TagsがKey=NameのインスタンスIDとインスタンス名を取得
aws ec2 describe-instances --filter "Name=instance-state-name,Values=running" | jq -r ".Reservations[].Instances[] | {InstanceId, InstanceName: (.Tags[] | select(.Key=="Name").Value)}"
#インスタンス名だけを抽出して、整形して出力
aws ec2 describe-instances --filter "Name=instance-state-name,Values=running" | jq -r ".Reservations[].Instances[] | {InstanceId, InstanceName: (.Tags[] | select(.Key=="Name").Value)}" | grep "InstanceName" | awk "{print $2}" | sed -e "s/"//g" -e "s/,//g" > hogeファイル
#インスタンスIDだけを抽出して、整形して出力
aws ec2 describe-instances --filter "Name=instance-state-name,Values=running" | jq -r ".Reservations[].Instances[] | {InstanceId, InstanceName: (.Tags[] | select(.Key=="Name").Value)}" | grep "InstanceId" | awk "{print $2}" | sed -e "s/"//g" -e "s/,//g"
#EC2についてるEIPを取得
aws ec2 describe-addresses --query "*[].PublicIp" --output text | tr "?" "?"
#ローカルPCからAWSへ取得したEIPリストを使ってSSHして、コマンド叩く用のシェル
#!/bin/bash
aws ec2 describe-addresses --query "*[].PublicIp" --output text | tr "?" "?" > elastic_ip.lst
export AWS_HOME=${HOME}/.aws
export AWS_CONFIG_FILE=${AWS_HOME}/config
export ELASTIC_IP=${HOME}/elastic_ip.lst
cat ${ELASTIC_IP} | while read line
do
ssh -n user@$line -p 22 -i /xxxxxx/xxxxxx "example-command" > result.txt
done