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の処理を削除すればできます。