• AWSのSecurityGroup関連の調査・更新CLIメモ

    こんにちは。小宮です。

    今回ご紹介するのはpiculetでgroupファイルでルール更新というのではありません。 ちょっと整理とか削除とかしたいけど手でポチぽちするには量が多いしオペミスが心配だし手間だし早く帰りたいので どれに紐づいてるのか一括で調べたい一括更新したいといった時にforループとCLIでなんとかする方法です。 SecurityGroupの上限緩和申請の際にSGの書き方的に通信パフォーマンスがアレで引っ掛かった時等にこんなような作業が必要に。

    あんまり使いこなせてるほうでもないのですが、一応載せておきます。ご利用は自己責任でお願いします。 みなさま似たようなことしててもっと洗練されたやり方をご存知の方も沢山いそうです。 弊社だと稲田さんほか協力部隊の方々がもっと詳しそうな気がします。マサカリ歓迎いたします。 稲田さんに聞いたらもっとoutputはtextにしてjoinを使いこなせと言っていたのでそのうち何か書いてくれると思います。

    SecurityGroupのidから紐づくインスタンス情報を得る

    これは既存の情報を得るだけで更新しないので気軽に実行できると思います。 まずリストを作る(消したいSGをいれる)

    vi listfile
    sg-xxxxxxxx,SG_hoge_dev1
    sg-yyyyyyyy,SG_fuga_dev2
    ...
    
    list=listfile
    profile=xxxx
    

    リストを読み込んでdescribe-instancesを実行

    for i in `cat $list|grep -v elb`
    do
    groupid=`echo $i |awk -F, '{print $1}'`
    groupname=`echo $i |awk -F, '{print $2}'`
    echo $i
    aws ec2 describe-instances --profile ${profile} --filters Name=instance.group-id,Values=$groupid --output text \
    --query 'Reservations[].Instances[*].[InstanceId,PrivateIpAddress,Tags[?Key==`Name`].Value[]]' --output json \
    |sed -e '/\]/d' -e '/\[/d' -e '/^$/d' -e 's/ //g'|perl -pe 's/,[ ]*\n/,/g'|sort -t , -k 3
    echo ""
    done
    

    出てきた結果からlistfileをつくりSGはずしたり替えたりするときにつかいます。

    ...