この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
こんにちは、yokatsukiです。
AWSの運用をしていると、一時的なセキュリティグループの設定変更がしばしば発生します。例えばRDSにリモート環境からアクセスしたい、という場合です。その際に以下の画面操作が毎回発生します。
- Webページを開く
- Management Consoleにサインイン
- EC2 Dashboardにアクセス
- Security Group画面へ移動
- 目的のセキュリティグループに対してパブリックIPアドレス追加/削除
...面倒臭いですね。面倒臭いです。これをターミナル開いてコマンド一発で実施できるようにしました。
参考にしたのはたけたけさんの下記過去エントリです。
[AWS][CLI] EC2にSSHするときだけ、security groupに自分のアドレスを追加する
準備1:プロファイルの登録
事前に発行したAWSクレデンシャル情報をプロファイルとして登録しておきます。既にプロファイルを登録されている方は操作不要です。
$ aws configure --profile AAA
AWS Access Key ID [None]: ********************
AWS Secret Access Key [None]: ********************
Default region name [None]: ap-northeast-1
Default output format [None]: json
この操作によって、以下のファイルにプロファイル情報が追加されます。
$ cat ~/.aws/config
[profile AAA]
output = json
region = ap-northeast-1
$ cat ~/.aws/credentials
[AAA]
aws_access_key_id=********************
aws_secret_access_key=********************
準備2:セキュリティグループID確認
セキュリティグループのGroup IDを事前に確認しておきます。Group IDは、後述のスクリプトに記入します。
スクリプト作成、実行
IPアドレス追加スクリプト
以下のスクリプトを作成します。スクリプト内変数MYSECGROUPに先程確認したセキュリティグループIDを記載しておきます。
$ cat ./addSecEntry.sh
#!/bin/sh
if [ -e ./myip.txt ]; then
./delSecEntry.sh
fi
curl -s -o ./myip.txt http://checkip.amazonaws.com/
MYIP=`cat ./myip.txt`
MYSECGROUP=sg-********
aws --profile AAA ec2 authorize-security-group-ingress --group-id $MYSECGROUP --protocol tcp --port 5439 --cidr $MYIP/32
このスクリプトのポイントは以下です。
- セキュリティグループに追加したIPアドレスをmyip.txtに保存する
- myip.txtが既にある場合は、セキュリティグループ登録済みということで、一旦myip.txt記載のIPアドレスを削除して、現在のIPアドレスで再登録する
- 現在のIPアドレスはAWSのパブリックIPアドレス検索サービス(http://checkip.amazonaws.com/)を使用
- 参考:Linux インスタンス用の受信トラフィックの認可
IPアドレス削除スクリプト
以下のスクリプトを作成、実行します。前提として、上記IPアドレス追加スクリプトによって、myip.txtが作成されていることが必要になります。myip.txtが存在しない場合、事前に登録されたIPアドレスは存在しないとみなし、エラーになります。
$ cat ./delSecEntry.sh
#!/bin/sh
if [ ! -e ./myip.txt ]; then
echo "not found ./myip.txt. Did you run the configuration of the security group?"
exit
fi
MYIP=`cat ./myip.txt`
MYSECGROUP=sg-********
aws --profile AAA ec2 revoke-security-group-ingress --group-id $MYSECGROUP --protocol tcp --port 5439 --cidr $MYIP/32
rm ./myip.txt
まとめ
モバイル環境で必要な、セキュリティグループへ自身のパブリックIPアドレスを一時追加、削除を行うスクリプトを作成しました。基本的な操作だけに頻度が高く、これでだいぶ楽になりました。
今後改良するアイデアとして、プロファイルやセキュリティグループ名をパラメータ化すると、より便利になるかなと思いますが、まずはここまで。それでは、また。