概要
- 平日昼間しか稼働しないお値段高めのインスタンスがあるので節約します。
- CloudWatchやLambdaで簡易的に実装されている例がありますが、ステート管理や設定の柔軟さに欠けます。
- こちらの設定が良さげです。
- https://docs.aws.amazon.com/solutions/latest/instance-scheduler/deployment.html#step1
- CloudFormationで管理されているのでデプロイが楽
- 曜日、時間、タイムゾーン、リージョンなどの条件を指定して定期的にスタート、停止
- 停止やスタートのステートを保管しているので効率的な実行
設定概要
- こちらの設定が十分細かいのでこちらの設定どおりにやる
- 今回は、sleep-night-and-weekend-ec2 という名前でデプロイしました。
デフォルトではいくつか設定が入っているのでDynamoDBのテーブルを見てみるのが良いと思います。どのようなロジックなのかがなんとなくわかると思います。typeがscheduleになっているレコードが実行される設定です。crontabの行のようなものです。
デフォルトで入稿されているオフィスアワーの設定を更新します。fish用設定
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
日本時間での計画停止の設定を入稿します。
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に打てば終わり。
set instance_id 'i-0d13c9eb8xxxxxxxxxx' aws ec2 create-tags \ --resources $instance_id \ --tags Key=Schedule,Value=jp-office-hours
CloudWatchLogsを確認。デフォルトは5分ごとにこのスタックが実行されるので5分以内にはas-isになります。
Comments