[EC2 Systems Manager] Maintenance Windowsの「Duration」と「Stop initiating tasks」とは何か?

2017.04.17

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちわ。大阪のガノタです。
下記のエントリでMaintenance Windowsについてご紹介していますが、この時に気になった 「Duration」と「Stop initiating tasks」 の設定についてもう少し詳しく検証してみたのでご紹介します。

EC2 Systems ManagerでAMIの日次取得をやってみた

「Duration」と「Stop initiating tasks」の意味

まず、この2つの項目についてですが、この項目はメンテナンスウィンドウを作成する際に指定する項目になります。
下記のエントリでも紹介していますが、設定項目の名称が当時とは変わっていたので、改めて内容を紹介したいと思います。

Amazon EC2 Systems ManagerでMaintenance Windowsを試してみた

まず 「Duration」 ですが、これは メンテナンスウィンドウの実行時間 の設定です。Durationは分かりやすいですね。しかし「Stop initiating tasks」の項目について、当初イマイチハッキリ理解が出来ませんでしたので、本エントリではこの項目について主に記載していきたいと思います。

「Stop initiating tasks」とは?

一言で書くと、「Stop initiating tasks」は、このメンテナンスウィンドウの終了時間を起点として「何時間前から次のタスクを実行しないようにするか」を設定 するものです。

さて、先程のAMI取得のエントリでは「Duration」を2として「Stop initiating tasks」を1にしています。繰り返しになりますが、これは 「メンテナンスウィンドウの終了1時間前になれば新たなタスクは実行しない」 という意味になります。

下記の図で、青色の「Stop initiating tasks」で指定した時間になると新しいタスクは実行されないという動きになります。

01-duration-curoff

そしてこれは、メンテナンスウィンドウのタスクを複数登録する時に役立ちます。

メンテナンスウィンドウでは、実際の処理内容を 「タスク」 として登録します。タスクは複数登録することが可能で、それぞれ優先度を設定することができます。
複数のタスクを登録した場合、前のタスクに時間がかかってメンテナンスウィンドウの時間内に全てのタスクが実行できない場合があります。そういう時に、後のタスクを実行させたくない場合は「Stop initiating tasks」で指定した時間になれば新しいタスクを実行しないようになります。

下記の場合だと、前のTask-1とTask-2に時間がかかってしまい、「Task-3」は実行されない ということになります。

02-cutoff-tasks

「Stop initiating tasks」を直訳すると「タスクの開始を止める」という意味 なので、「新しいタスクを実行しない時間」という意味が分かりやすいかと思います。

各項目の説明は下記が参考になるかと思います。

メンテナンスウィンドウコンソールのチュートリアル - Amazon EC2 Systems Manager

ちなみに以前はマネジメントコンソール上では 「Cutoff」 という表記になっていたようです。AWS CLIでの出力は「Cutoff」という表記のままでしたので、マネジメントコンソール上の表現の違いに注意しましょう。

「Stop initiating tasks」の検証

それでは実際に「Stop initiating tasks」の動作確認をしてみたいと思います。確認する環境は以下の通りとします。

  • 確認用のメンテナンスウィンドウの「Durationは2」、「Stop initiating tasksは1」とする
  • 3つのタスクを登録
    • 40分かかるタスクを2つ登録
    • Priorityをそれぞれ1、2とする
    • Priorityを3に設定したタスクを登録

40分かかるタスクは、単に40分間sleepするだけのタスクとして、以下のようなDocumentを作成しました。同じ内容のドキュメントを2つ(40minDocument1,40minDocument2)作成しています。

10-40min-document

3つ目のタスクは何でも構いません。想定どおりの動作であれば3つ目のタスクは実行されない為です。

検証結果

実際にこれらのタスクを登録して動作を確認してみます。以下が40分毎に確認した内容です。

まずは最初の40分が経過した状態です。最初の「40minDocument1」というタスクが「Success」で完了していて、2つ目の「40minDocument2」というタスクが実行中(In progress)になっています。

05-cutoff-40min1

さらに40分経過後の状態が以下です。最初の2つのタスクは正常に完了していますが、3つ目のタスク「MyTestDocument」が「Timed out」になっていて実行されていません。

09-cutoff-timedout-verbose

以上より、想定通りの動きを確認できました。

最後に

具体的な動作を通して、設定項目の意味を確認することが出来ました。Maintenance Windowsの機能は比較的新しい機能なので、うまく使いこなしていきたいですね。

以上です。