※追記 マネジメントコンソール上でもscheduled設定できるようになったようです。
マネジメントコンソールでの設定
コマンドラインでの設定
as-put-scheduled-update-group-actionコマンドを使えばmm月dd日以降この設定したいというときに使える。
例えば、月初だけインスタンス数を増やしたい、深夜帯だけインスタンスを減らしたいなど
期間内スケジュールを実行したいときは、--recurrenceオプションを使うことにより簡単に期間内の設定できる。
参考:AWSドキュメント
http://docs.aws.amazon.com/ja_jp/AutoScaling/latest/DeveloperGuide/schedule_time.html
準備
マネジメントコンソールで設定できないのでAWS CLIを使う。
設定
$ aws configure
AWS Access Key ID [****************5A#]:
AWS Secret Access Key [****************D3IT]:
Default region name [ap-northeast-1]:
Default output format [json]:
~/.aws/credentials
が作成される
微修正
aws_access_key_id = XXXXXXXXXXXXXXXXXXX
aws_secret_access_key = YYYYYYYYYYYYYYYYYYYYYYYYYYYY
が生成されるがなぜか as系コマンド実行で"Malformed input-Bad credentials in file: "
と怒られたので、以下のように書き換える
AWS_ACCESS_KEY=XXXXXXXXXXXXXXXXXXX
AWS_SECRET_KEY=YYYYYYYYYYYYYYYYYYYYYYYYYYYY
環境変数設定
$ # credentialファイルを環境変数に設定
$ export AWS_CREDENTIAL_FILE=~/.aws/credentials
スケジュールの登録
例えば、
月末(28-31日)にインスタンス最小数を増やし
月初(3日)にインスタンス最小数を減らす
月末にインスタンス最小数を増やす
毎月28-31日 23:00 にスケジュール実行 インスタンス数の最小を5,最大を10に設定
$ as-put-scheduled-update-group-action {スケジュール名} -g {Auto Scaling Group} --name {スケジュール識別名} --region ap-northeast-1 --recurrence "00 14 28-31 * *" -min-size 5 -max-size 10
時刻はUTCで設定すること
--recurrence オプションを使うことによりLinuxのcronのようにスケジュールを実行
登録されたスケジュール確認
$ as-describe-scheduled-actions --headers
Auto Scalingで立ち上がったインスタンス確認
$ as-describe-auto-scaling-instances --region ap-northeast-1
月末にインスタンス最小数を減らす(戻す)
毎月 3日 03:00 スケジュール実行 インスタンス数の最小を2,最大を10に設定
$ as-put-scheduled-update-group-action {スケジュール名} -g {Auto Scaling Group} --name "スケジュール識別名" --region ap-northeast-1 --recurrence "00 18 3 * *" -min-size 2 -max-size 10
スケジュールの削除
$ as-delete-scheduled-action {スケジュール識別名} --auto-scaling-group {Auto Scaling Group}