mizuiro_rivi’s diary

日々の生活を連ねるブログ

awscli ec2に名前タグがないものをリスト化する

#!/bin/bash
#containsだけではダメだったのでstartwith,endswithを通して完全一致させる->ValueにNameが含まれている時があるから
#ちなみにこれにnotを通したシェルは挙動がおかしい->nameタグを含んでいる->Nameタグがないけどリストから漏れているものがある可能性があるのでwebコンソールで確認
FILE2=with_nametag.txt
FILE1=ec2_list.txt
#nameタグを含むinstanceIDの取得
aws ec2 describe-instances | jq '.Reservations[].Instances[] | select(.Tags[].Key | startswith("Name"))?| select(.Tags[].Key | endswith("Name"))? |  .InstanceId' | sort > ${FILE2}
#ec2全てのinstanceIDの取得
aws ec2 describe-instances | jq '.Reservations[].Instances[].InstanceId' | sort > ${FILE1}
​
# 比較
diff -y -t -d ${FILE1} ${FILE2} > diff.txt
# 第1ファイルにのみ存在
grep -e "<" -e "|" diff.txt | cut -d " " -f 1 > diff_only_${FILE1}
cat diff_only_${FILE1}
​
#諸々のファイルの削除
rm ${FILE1}
rm ${FILE2}
rm diff.txt 
rm diff_only_${FILE1}
​
#aws ec2 describe-instances | jq '.Reservations[].Instances[] | select(.InstanceId=="{インスタンスid}") | .Tags[]' <=確認用