あるシステムで割高なEC2インスタンスを利用していて、DEVとSTGのEC2インスタンスを普段は停止し、利用時のみ起動する
という運用にしています。
ただ、起動や停止をするだけのために、AWSにログインするのは面倒です(起動するためだけに、6桁のあれを入力したりするのはちょっと...)。
コマンド1発でできればいいな〜
と思い、起動/停止するシェルスクリプトを作成したので、備忘録として残します。
作成したシェルスクリプト
AWSコマンドラインインターフェイスがインストール済み、かつ、defaultの認証情報プロファイルの設定が完了している前提で作成したシェルスクリプトです。
※作成時のAWS-CLIはv2.9.10です。
ec2-start-stop.sh
#!/bin/sh
INSTANCE_ID_DEV="i-dev11111111111111"
INSTANCE_ID_STG="i-stg22222222222222"
if [ $# -lt 2 ]; then
echo "ERROR: Environment and SubCommand is required.\n"
exit 0
fi
instanceid=""
if [ $1 == "dev" ]; then
instanceid=${INSTANCE_ID_DEV}
elif [ $1 == "stg" ]; then
instanceid=${INSTANCE_ID_STG}
else
echo "ERROR: '$1' is unknown environment. Specify 'dev' or 'stg'.\n"
exit 0
fi
subcommand=""
if [ $2 == "start" ]; then
subcommand="start-instances"
elif [ $2 == "stop" ]; then
subcommand="stop-instances"
else
echo "ERROR: '$2' is unknown subcommand. Specify 'start' or 'stop'.\n"
exit 0
fi
echo "Run Command: aws ec2 ${subcommand} --instance-ids ${instanceid}"
aws ec2 ${subcommand} --instance-ids ${instanceid}
まとめ
久々にシェルスクリプト書いたら、構文を思い出せなくてショックだった。