458 文字
2 分
Instance Schedulerを使ってEC2, RDSの定期停止
2020-08-27

概要#

  • 平日昼間しか稼働しないお値段高めのインスタンスがあるので節約します。

  • CloudWatchやLambdaで簡易的に実装されている例がありますが、ステート管理や設定の柔軟さに欠けます。

  • こちらの設定が良さげです。

設定概要#

テンプレートの内容

デフォルトではいくつか設定が入っているのでDynamoDBのテーブルを見てみるのが良いと思います。どのようなロジックなのかがなんとなくわかると思います。typeがscheduleになっているレコードが実行される設定です。crontabの行のようなものです。

CloudFormationでのデプロイ後

デフォルトで入稿されているオフィスアワーの設定を更新します。fish用設定

Terminal window
set stack sleep-night-and-weekend-ec2
set aws_profile default
set name office-hours
set region ap-northeast-1
scheduler-cli update-period --name $name --begintime 09:00 --endtime 23:00 --weekdays mon-fri --stack $stack --profile-name $aws_profile --region $region

日本時間での計画停止の設定を入稿します。

Terminal window
set periods office-hours
set schedule jp-office-hours
set description "Office hours in Japan"
set stack sleep-night-and-weekend-ec2
set aws_profile default
set region ap-northeast-1
scheduler-cli create-schedule --stack $stack --name $schedule --periods $periods --description "$description" --timezone Asia/Tokyo --profile-name $aws_profile --region $region

以下のレコードが追加されます。

あとは規定のTagをEC2に打てば終わり。

Terminal window
set instance_id 'i-0d13c9eb8xxxxxxxxxx'
aws ec2 create-tags \
--resources $instance_id \
--tags Key=Schedule,Value=jp-office-hours

CloudWatchLogsを確認。デフォルトは5分ごとにこのスタックが実行されるので5分以内にはas-isになります。

Instance Schedulerを使ってEC2, RDSの定期停止
https://blog.teraren.com/posts/aws-instance-scheduler/
作者
Yuki Matsukura
公開日
2020-08-27
ライセンス
CC BY-NC-SA 4.0

コメント