【AWS】セキュリティグループをAWS CLIで設定する

記事
IT・テクノロジー
AWS環境の運用でコンパネポチポチに疲れた人向け。
「信じられるのは己の目のみ」という人は別の方の記事を御覧ください。

まずはAWS CLIが使える環境を用意しましょう。
最近なら Cloud Shell というサービスがあるので、それを使うのが早いです。

セキュリティグループの一覧確認
$ aws ec2 describe-security-groups
実行リージョンのセキュリティグループ一覧が確認できます。

セキュリティグループの作成

$ aws ec2 create-security-group \
--group-name `group-name` \
--description `"description"` \
--vpc-id `vpc-id`
` (バッククウォート) の group-name に作成したいセキュリティグループ名
description に役割、vpc-idに作成先のVPCを指定すれば作成できます。

インバウンドルールの追加

$ aws ec2 authorize-security-group-ingress \
--group-id `group-id` \
--ip-permissions IpProtocol=`IpProtocol`,FromPort=`FromPort-num`,ToPort=`ToPort-num`,IpRanges='[{CidrIp=`xxx.xxx.xxx.xxx/xx`},Description=`Description`]'
運用の中で最も頻度が多いと思われる操作
group-idにセキュリティグループのID、IpProtocolにプロトコル(TCP or UDP)
FromPort-num、ToPort-num は許可したいポートの範囲の開始と終了値
descriptionに説明文を入れれば登録できます。

まとめて登録する

ルールを追加するコマンドを for文で繰り返します。

事前に↓のリストが必要です。
後述の都合で「add_rule_list.txt」として作成してます。
tcp:80:80:10.0.0.0/16:My NetWork
tcp:80:80:172.31.0.0/16:My NetWork 2
tcp:80:80:192.168.0.0/16:My NetWork 3
: (コロン) 区切りでプロトコル、IP範囲(FromとTo)、IPアドレス、説明の順

後は下のfor文でリストの通り追加されます。
$ for i in $(cat add_rule_list.txt)
do
    IpProtocol=$(echo ${i} | awk -F : '{ print $1 }')
    FromPort=$(echo ${i} | awk -F : '{ print $2 }')
    ToPort=$(echo ${i} | awk -F : '{ print $3 }')
    CidrIp=$(echo ${i} | awk -F : '{ print $4 }')
    Description=$(echo ${i} | awk -F : '{ print $5 }')
    aws ec2 authorize-security-group-ingress \
    --group-id `group-id` \
    --ip-permissions IpProtocol=${IpProtocol},FromPort=${FromPort},ToPort=${ToPort},IpRanges="[{CidrIp=${CidrIp},Description=${Description}}]"
done

まとめて削除する

削除したい時は
authorize-security-group-ingress 
revoke-security-group-ingress
にして、リストとfor文からDescriptionの処理を削除すればできます。
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す