再起動がともなうAmazon EC2のスケジュールイベントの開始時間を変更出来る機能がリリースされました。
こんにちは 園部です。
EC2 を利用していると AWSからイベント通知が届き、指定された期間でメンテナンスが実行されたことはないでしょうか?
このイベントに対応されている担当者の皆様に
少し嬉しいサービスがリリースされましたので、共有させていただきます。
Amazon EC2 でスケジュールされたイベントの時間を選択できる新機能のご紹介
注:実際のスケジュールイベントを都合よく準備出来なかったため、机上での紹介となります。
前置き
冒頭にも書きましたが AWS では、セキュリティパッチ適用などの理由によりホストやネットワーク機器へのメンテナンスが実施されます。
(EC2 のみではなく RDS, ElastiCache, DirectConnect なども同様に実施されています)
今回は EC2を取り上げていきます。 EC2で、スケジュールイベントに関する情報は以下にまとめられています。 EC2を導入される際は、一度ご確認されることをお勧めします。
このイベント自体は、インフラストラクチャを健全に保つために必要なもので、回避自体よりも停止や再起動に備えた設計を行うことが最適とされています。
とはいえ、、こういうシーンもあるのではないでしょうか。(私はありました。)
「AWSからイベント通知来たよ!!」
「えー。この日時は勘弁して欲しい。」
「もうメンテナンス実行される前に、やっちゃおうよ。(夜中)」
そんな声を聞いてかどうかはわかりませんが、再起動をともなうスケジュールイベントの開始時間を変更する機能がリリースされました。
それでは見ていきましょう。
※ 現時点では利用するにはいくつかの条件があります。そちらについては、この後に記載していきます。
スケジュールされたイベントの時間を選択できる新機能 とは?
※ 現時点では、英語ドキュメント にのみ、記載があります。
You can reschedule most reboot events so that your instance is rebooted at a specific date and time that suits you.
- スケジュールされた再起動イベントに関して、特定の日時に変更し再起動させることが出来る。
マネジメントコンソールから変更する
マネジメントコンソール
へログイン >>> EC2
へ移動 >>> Event
へ移動 >>> Filter
から Instance resources
を選択
対象イベント
を選択 >>> Actions
>>> Schedule Event
を選択
※ 対象イベントがあれば、設定用ウィンドウが表示されます。
前述の通りスケジュールイベントが用意できていませんので、ドキュメントベースの説明となります。
Event start time
を入力 >>> Schedule Event
を選択
数分程度で、変更が完了します。
CLIから変更する
CLIでは、 modify-instance-event-start-time
を利用します。
実行環境
$ aws --version aws-cli/1.16.125 Python/2.7.10 Darwin/18.5.0 botocore/1.12.115
コマンド内容
$ aws ec2 modify-instance-event-start-time help NAME modify-instance-event-start-time - DESCRIPTION Modifies the start time for a scheduled Amazon EC2 instance event. See also: AWS API Documentation See 'aws help' for descriptions of global parameters. SYNOPSIS modify-instance-event-start-time [--dry-run | --no-dry-run] --instance-id --instance-event-id --not-before [--cli-input-json ] [--generate-cli-skeleton ] OPTIONS --dry-run | --no-dry-run (boolean) Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRun- Operation . Otherwise, it is UnauthorizedOperation. --instance-id (string) The ID of the instance with the scheduled event. --instance-event-id (string) The ID of the event whose date and time you are modifying. --not-before (timestamp) The new date and time when the event will take place. --cli-input-json (string) Performs service operation based on the JSON string provided. The JSON string follows the format provided by --gen- erate-cli-skeleton. If other arguments are provided on the command line, the CLI values will override the JSON-provided values. It is not possible to pass arbitrary binary values using a JSON-provided value as the string will be taken literally. --generate-cli-skeleton (string) Prints a JSON skeleton to standard output without sending an API request. If provided with no value or the value input, prints a sample input JSON that can be used as an argument for --cli-input-json. If provided with the value output, it validates the command inputs and returns a sample output JSON for that command. See 'aws help' for descriptions of global parameters. OUTPUT Event -> (structure) Describes a scheduled event for an instance. InstanceEventId -> (string) The ID of the event. Code -> (string) The event code. Description -> (string) A description of the event. After a scheduled event is completed, it can still be described for up to a week. If the event has been completed, this descrip- tion starts with the following text: [Completed]. NotAfter -> (timestamp) The latest scheduled end time for the event. NotBefore -> (timestamp) The earliest scheduled start time for the event. NotBeforeDeadline -> (timestamp) The deadline for starting the event.
実行例
$ aws ec2 modify-instance-event-start-time --instance-id i-1234567890abcdef0 --instance-event-id instance-event-0d59937288b749b32 --not-before 2019-03-25T10:00:00.000
- instance-id: 対象インスタンス
- instance-event-id: 対象イベントID
- not-before: 変更する開始時間(UTC)
数分程度で、変更が完了します。
変更結果確認
$ aws ec2 describe-instance-status --instance-id i-1234567890abcdef0 [ "Events": [ { "InstanceEventId": "instance-event-0d59937288b749b32", "Code": "system-reboot", "Description": "The instance is scheduled for a reboot", "NotAfter": "2019-03-14T22:00:00.000Z", "NotBefore": "2019-03-25T10:00:00.000Z", "NotBeforeDeadline": "2019-04-05T11:00:00.000Z" } ] ]
### 注意事項
※ 現時点では、4つほど条件があります。
Only reboot events with an event deadline date can be rescheduled. The event can be rescheduled up to the event deadline date. The Event Deadline column in the console and the NotBeforeDeadline field in the AWS CLI indicate if the event has a deadline date.
- EventDeadline を持つ再起動イベントのみ本機能は有効です。
- EventDeadline より前の日時で設定が可能です。
Only reboot events that have not yet started can be rescheduled. The Start Time column in the console and the NotBefore field in the AWS CLI indicate the event start time. Reboot events that are scheduled to start in the next 5 minutes cannot be rescheduled.
- 未実行のイベントのみが対象です。
- 5分以内に開始が予定されているイベントについては、変更できません。
The new event start time must be at least 60 minutes from the current time.
- 新しいイベント開始時刻は、現在時刻から60分以上後である必要があります。
If you reschedule multiple events using the console, the event deadline date is determined by the event with earliest event deadline date.
- コンソールから複数イベントを変更する際に、
Event Deadline
が異なる場合は最も早い日時を基準として判断されます。 - イベントA: Event Deadline が 2019-04-10T10:00:00
- イベントB: Event Deadline が 2019-04-15T10:00:00
- この場合に変更を実行する際には、Event Deadlineは 2019-04-10T10:00:00 として変更可否が判断されます。
さいごに
今回の機能で、AWSが実施するメンテナンスイベントへの柔軟性が少し得られたのではないでしょうか。
導入時に、クラウドベンダーによるイベントへのコントロール可否が導入障壁の要因の一つとなるというケースも見聞きした経験があります。
(もちろん、マインドや設計の変更が最適ではありますが...)課題への回答として、今回機能は、説明材料の一つになるのではないでしょうか。