LoginSignup
28
30

More than 5 years have passed since last update.

AWS EC2の自動停止/起動を簡単に行う

Last updated at Posted at 2014-11-08

目的

費用削減のためにEC2をあんまり使わない時間に停止しといて、朝に起動したい。

やってること

1台のEC2(Amazon Linux)を中心に他のサーバの起動/停止をAWS-cliを使って制御
   ↑
   こいつを今後は「制御サーバ」と呼びます。

準備

(1)ユーザの作成
EC2を起動/停止するだけのユーザをIAMにて作成します。
めんどくさかったので「AmazonEC2FullAccess」を割り当てました。
シークレットキー等が必要となるので、控えておいてください。

(2)AWS-Cliの初期設定
制御サーバにログインを行います。

コマンドの初期設定を行います。

$ aws configure
AWS Access Key ID [None]:【(1)で作成したユーザのAccessKeyを入力】
AWS Secret Access Key [None]:【(1)で作成したユーザのSecretKeyを入力】
Default region name [None]:【Enter】
Default output format [None]:【Enter】

これで再起動の準備が整いました。

(3)コマンドを使って適当なEC2の再起動実験
ちゃんとユーザへの権限が割り当てっているかなどを確認するために、一度コマンドを実行します。
※運用影響の無いサーバでご確認ください。

・停止
インスタンスIDはマネジメントコンソールから調べておいてください。
リージョンも同様です。
$ aws ec2 stop-instances --region="ap-northeast-1" --instance-ids="i-XXXXXXXXXX"

・起動
$ aws ec2 start-instances --region="ap-northeast-1" --instance-ids="i-XXXXXXXXXX"

設定

ただcronに設定するだけです。
2台のサーバを起動/停止する例です。ちょっと時間差つけてみました。
i-XXXXXXX→0時停止、9時5分起動
i-YYYYYYY→0時5分停止、9時起動

crontab -e

自分のためメモ
分 時 日 月 曜日 ユーザ コマンド

0 0 * * * aws ec2 stop-instances --region="ap-northeast-1" --instance-ids="i-XXXXXXXX"
5 0 * * * aws ec2 stop-instances --region="ap-northeast-1" --instance-ids="i-YYYYYYYY"
5 9 * * * aws ec2 start-instances --region="ap-northeast-1" --instance-ids="i-XXXXXXX"
0 9 * * * aws ec2 start-instances --region="ap-northeast-1" --instance-ids="i-YYYYYYYY"

設定の再確認
$ crontab -l

28
30
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
28
30