

• AWS Systems Manager CloudWatch ダッシュボードは、2026 年 4 月 30 日以降は利用できなくなります。お客様は、これまでと同様に Amazon CloudWatch コンソールを使用して、Amazon CloudWatch ダッシュボードの表示、作成、管理を継続できます。詳細については、「[Amazon CloudWatch ダッシュボードのドキュメント](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)」を参照してください。

# チュートリアル: AWS CLI を使用してメンテナンスウィンドウを作成および設定する
<a name="maintenance-windows-cli-tutorials-create"></a>

このチュートリアルでは、AWS Command Line Interface (AWS CLI) を使用して、メンテナンスウィンドウおよびそのターゲットとタスクを作成し設定する方法について説明します。チュートリアルの主な手順はシンプルなステップで構成されています。1 つのメンテナンスウィンドウを作成し、1 つのターゲットを識別して、メンテナンスウィンドウで実行するシンプルなタスクを設定します。また、より複雑なシナリオを試すのに役立つ情報も提供しています。

このチュートリアルの手順に従う際に、斜体の*赤色*テキストの値を、独自のオプションおよび ID に置き換えてください。例えば、メンテナンスウィンドウ ID *mw-0c50858d01EXAMPLE* とインスタンス ID *i-02573cafcfEXAMPLE* を、作成したリソースの ID に置き換えます。

**Topics**
+ [ステップ 1: AWS CLI を使用してメンテナンスウィンドウを作成する](mw-cli-tutorial-create-mw.md)
+ [ステップ 2: AWS CLI を使用してメンテナンスウィンドウにターゲットノードを登録する](mw-cli-tutorial-targets.md)
+ [ステップ 3: AWS CLI を使用してメンテナンスウィンドウにタスクを登録する](mw-cli-tutorial-tasks.md)

# ステップ 1: AWS CLI を使用してメンテナンスウィンドウを作成する
<a name="mw-cli-tutorial-create-mw"></a>

このステップではメンテナンスウィンドウを作成して、名前、スケジュール、所要時間などの基本的なオプションを指定します。以降の手順で、更新するインスタンスと実行するタスクを選択します。

この例では、5 分ごとに実行されるメンテナンスウィンドウを作成します。通常は、メンテナンスウィンドウを頻繁に実行することはありません。ただし、この頻度では、チュートリアルの結果をすぐに確認できます。タスクが正常に実行された後、頻度を減らす方法を示します。

**注記**  
メンテナンスウィンドウのスケジュールに関するオプションの相互関係については、「[メンテナンスウィンドウのスケジューリングおよび有効期間のオプション](maintenance-windows-schedule-options.md)」を参照してください。  
`--schedule` オプションの使用方法の詳細については、「[リファレンス: Systems Manager の cron 式および rate 式](reference-cron-and-rate-expressions.md)」を参照してください。

**AWS CLIを使用してメンテナンスウィンドウを作成するには**

1. AWS Command Line Interface (AWS CLI) を開き、ローカルマシンで次のコマンドを実行して、以下を実行するメンテナンスウィンドウを作成します。
   + 5 分ごとに最大 2 時間実行します (必要に応じて)。
   + メンテナンスウィンドウのオペレーションが終了してから 1 時間以内に新しいタスクが開始されないようにします。
   + 関連付けられていないターゲット (メンテナンスウィンドウに登録されていないインスタンス) を許可します。
   + カスタムタグによって、メンテナンスウィンドウをその作成者がチュートリアルで使用することを示します。

------
#### [ Linux & macOS ]

   ```
   aws ssm create-maintenance-window \
       --name "My-First-Maintenance-Window" \
       --schedule "rate(5 minutes)" \
       --duration 2 \
       --cutoff 1 \
       --allow-unassociated-targets \
       --tags "Key=Purpose,Value=Tutorial"
   ```

------
#### [ Windows ]

   ```
   aws ssm create-maintenance-window ^
       --name "My-First-Maintenance-Window" ^
       --schedule "rate(5 minutes)" ^
       --duration 2 ^
       --cutoff 1 ^
       --allow-unassociated-targets ^
       --tags "Key"="Purpose","Value"="Tutorial"
   ```

------

   システムは以下のような情報を返します。

   ```
   {
      "WindowId":"mw-0c50858d01EXAMPLE"
   }
   ```

1. 次に、以下のコマンドを実行して、既にアカウントにあるこのメンテナンスウィンドウおよび他のウィンドウの詳細を表示します。

   ```
   aws ssm describe-maintenance-windows
   ```

   システムは以下のような情報を返します。

   ```
   {
      "WindowIdentities":[
         {
               "WindowId": "mw-0c50858d01EXAMPLE",
               "Name": "My-First-Maintenance-Window",
               "Enabled": true,
               "Duration": 2,
               "Cutoff": 1,
               "NextExecutionTime": "2019-05-11T16:46:16.991Z"
         }
      ]
   }
   ```

「[ステップ 2: AWS CLI を使用してメンテナンスウィンドウにターゲットノードを登録する](mw-cli-tutorial-targets.md)」に進みます。

# ステップ 2: AWS CLI を使用してメンテナンスウィンドウにターゲットノードを登録する
<a name="mw-cli-tutorial-targets"></a>

このステップでは、新しいメンテナンスウィンドウでターゲットを登録します。この場合、メンテナンスウィンドウ実行時に更新するノードを指定します。

ノード ID を使用して一度に複数のノードを登録する例、タグを使用して複数のノードを識別する例、およびリソースグループをターゲットとして指定する例については、「[例: ターゲットをメンテナンスウィンドウに登録する](mw-cli-tutorial-targets-examples.md)」を参照してください。

**注記**  
[Maintenance Windows のチュートリアルの前提条件](maintenance-windows-tutorials.md)で説明されているように、このステップで使用する Amazon Elastic Compute Cloud (Amazon EC2) インスタンスは既に作成されているはずです。

**AWS CLI を使用してメンテナンスウィンドウにターゲットノードを登録するには**

1. ローカルマシンで次のコマンドを実行します。各*リソースプレースホルダーの例*をユーザー自身の情報に置き換えます。

------
#### [ Linux & macOS ]

   ```
   aws ssm register-target-with-maintenance-window \
       --window-id "mw-0c50858d01EXAMPLE" \
       --resource-type "INSTANCE" \
       --target "Key=InstanceIds,Values=i-02573cafcfEXAMPLE"
   ```

------
#### [ Windows ]

   ```
   aws ssm register-target-with-maintenance-window ^
       --window-id "mw-0c50858d01EXAMPLE" ^
       --resource-type "INSTANCE" ^
       --target "Key=InstanceIds,Values=i-02573cafcfEXAMPLE"
   ```

------

   システムは以下のような情報を返します。

   ```
   {
      "WindowTargetId":"e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE"
   }
   ```

1. ここで、ローカルマシンで次のコマンドを実行して、メンテナンスウィンドウのターゲットに関する詳細を表示します。

------
#### [ Linux & macOS ]

   ```
   aws ssm describe-maintenance-window-targets \
       --window-id "mw-0c50858d01EXAMPLE"
   ```

------
#### [ Windows ]

   ```
   aws ssm describe-maintenance-window-targets ^
       --window-id "mw-0c50858d01EXAMPLE"
   ```

------

   システムは以下のような情報を返します。

   ```
   {
       "Targets": [
           {
               "WindowId": "mw-0c50858d01EXAMPLE",
               "WindowTargetId": "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE",
               "ResourceType": "INSTANCE",
               "Targets": [
                   {
                       "Key": "InstanceIds",
                       "Values": [
                           "i-02573cafcfEXAMPLE"
                       ]
                   }
               ]
           }
       ]
   }
   ```

「[ステップ 3: AWS CLI を使用してメンテナンスウィンドウにタスクを登録する](mw-cli-tutorial-tasks.md)」に進みます。

# 例: ターゲットをメンテナンスウィンドウに登録する
<a name="mw-cli-tutorial-targets-examples"></a>

[ステップ 2: AWS CLI を使用してメンテナンスウィンドウにターゲットノードを登録する](mw-cli-tutorial-targets.md) で示すように、ノード ID を使用して、単一のノードをターゲットとして登録できます。このページのコマンド形式を使用すると、複数のノードをターゲットとして登録することもできます。

一般的に、メンテナンスウィンドウのターゲットとして使用するノードを特定する方法は 2 つあります。個々のノードを指定する方法と、リソースタグを使用する方法です。例 2～3 に示すように、リソースタグメソッドには、さらに多くのオプションがあります。

メンテナンスウィンドウのターゲットとして、1 つ以上のリソースグループを指定することもできます。リソースグループには、ノードおよびサポートされている他の多くの種類の AWS リソースを含めることができます。次に、例 4 と 5 で、リソースグループをメンテナンスウィンドウのターゲットに追加する方法を示しています。

**注記**  
1 つのメンテナンスウィンドウタスクが複数のターゲットに登録されている場合、そのタスクの呼び出しは並列ではなく、順番に実行されます。複数のターゲットで同時にタスクを実行する必要がある場合は、各ターゲットでタスクを個別に登録し、各タスクに同じ優先度レベルを割り当てます。

リソースグループの作成と管理の詳細については、*AWS Resource Groups ユーザーガイド*の「[リソースグループとは](https://docs.aws.amazon.com/ARG/latest/userguide/resource-groups.html)」および*AWS ニュースブログ*の「[AWS のリソースグループとタグ付け](https://aws.amazon.com/blogs/aws/resource-groups-and-tagging/)」を参照してください。

AWS Systems Manager のツールである Maintenance Windows のクォータについては、次の例で指定されているものに加えて、「*Amazon Web Services 全般のリファレンス*」の「[Systems Manager のサービスクォータ](https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm)」を参照してください。

## 例 1: ノード ID を使用して複数のターゲットを登録する
<a name="mw-target-example-1"></a>

次のコマンドをローカルマシン形式で実行し、ノード ID を使用して複数のノードをターゲットとして登録します。各*リソースプレースホルダーの例*をユーザー自身の情報に置き換えます。

------
#### [ Linux & macOS ]

```
aws ssm register-target-with-maintenance-window \
    --window-id "mw-0c50858d01EXAMPLE" \
    --resource-type "INSTANCE" \
    --target "Key=InstanceIds,Values=i-02573cafcfEXAMPLE,i-0471e04240EXAMPLE,i-07782c72faEXAMPLE"
```

------
#### [ Windows ]

```
aws ssm register-target-with-maintenance-window ^
    --window-id "mw-0c50858d01EXAMPLE ^
    --resource-type "INSTANCE" ^
    --target "Key=InstanceIds,Values=i-02573cafcfEXAMPLE,i-0471e04240EXAMPLE,i-07782c72faEXAMPLE
```

------

**推奨用途**: 最初はメンテナンスウィンドウに一意のノードグループを登録し、共通のノードタグを共有*しない*のが最も有益です。

**クォータ:** 各メンテナンスウィンドウターゲットに対して、ノードを合計 50 個まで指定できます。

## 例 2: ノードに適用されたリソースタグを使用してターゲットを登録する
<a name="mw-target-example-2"></a>

ローカルマシンで次のコマンドを実行して、割り当てたキーと値のペアで既にすべてがタグ付けされているノードを登録します。各*リソースプレースホルダーの例*をユーザー自身の情報に置き換えます。

------
#### [ Linux & macOS ]

```
aws ssm register-target-with-maintenance-window \
    --window-id "mw-0c50858d01EXAMPLE" \
    --resource-type "INSTANCE" \
    --target "Key=tag:Region,Values=East"
```

------
#### [ Windows ]

```
aws ssm register-target-with-maintenance-window ^
    --window-id "mw-0c50858d01EXAMPLE" ^
    --resource-type "INSTANCE" ^
    --target "Key=tag:Region,Values=East"
```

------

**推奨用途**: 最初はメンテナンスウィンドウに一意のノードグループを登録し、共通のノードタグを共有*する*のが最も有益です。

**クォータ**: ターゲットごとにキーと値のペアを合計 5 つまで指定できます。複数のキーと値のペアを指定する場合、ターゲットグループに含めると指定した*すべての*タグキーと値でノードをタグ付けする必要があります。

**注記**  
タグキー `Patch Group` または `PatchGroup` を使用してノードのグループにタグを付け、ノードに共通のキー値 (`my-patch-group`) を割り当てることができます。([EC2 インスタンスメタデータでタグを許可](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#allow-access-to-tags-in-IMDS)している場合は、スペースなしで `PatchGroup` を使用する必要があります。) Systems Manager のツールである Patch Manager は、ノードで `Patch Group` または `PatchGroup` キーを評価し、適用されるパッチベースラインを決定するのに役立ちます。タスクで `AWS-RunPatchBaseline` SSM ドキュメント (またはレガシー `AWS-ApplyPatchBaseline` の SSM ドキュメント) が実行される場合は、メンテナンスウィンドウにターゲットを登録する際に、同じ `Patch Group` または `PatchGroup` のキーの値を指定することができます。例: `--target "Key=tag:PatchGroup,Values=my-patch-group`。そうすることで、メンテナンスウィンドウを使用して、同じパッチベースラインにすでに関連付けられているノードグループのパッチを更新できます。詳細については、「[パッチグループ](patch-manager-patch-groups.md)」を参照してください。

## 例 3: タグキーのグループを使用してターゲットを登録する (タグ値なし)
<a name="mw-target-example-3"></a>

ローカルマシンで次のコマンドを実行して、キー値に関係なく、複数のタグキーが割り当てられているノードをすべて登録します。各*リソースプレースホルダーの例*をユーザー自身の情報に置き換えます。

------
#### [ Linux & macOS ]

```
aws ssm register-target-with-maintenance-window \
    --window-id "mw-0c50858d01EXAMPLE" \
    --resource-type "INSTANCE" \
    --target "Key=tag-key,Values=Name,Instance-Type,CostCenter"
```

------
#### [ Windows ]

```
aws ssm register-target-with-maintenance-window ^
    --window-id "mw-0c50858d01EXAMPLE" ^
    --resource-type "INSTANCE" ^
    --target "Key=tag-key,Values=Name,Instance-Type,CostCenter"
```

------

**推奨用途**: 1 つのタグキーやタグキーと値のペアではなく、複数のタグ*キー* (値はなし) を指定して、ノードをターゲットにする場合に役立ちます。

**クォータ**: ターゲットごとにタグキーを合計 5 つまで指定できます。複数のタグキーを指定する場合、ターゲットグループに含めるように指定した*すべての*タグキーで、ノードにタグ付けする必要があります。

## 例 4: リソースグループ名を使用してターゲットを登録する
<a name="mw-target-example-4"></a>

ローカルマシンで次のコマンドを実行して、指定されたリソースグループを登録します。含まれるリソースのタイプは関係ありません。*mw-0c50858d01EXAMPLE* を自分の情報に置き換えます。メンテナンスウィンドウに割り当てたタスクが、このリソースグループに含まれるリソースのタイプで動作しない場合は、エラーがレポートされる場合があります。これらのエラーにもかかわらず、サポートされているリソースタイプが検出されたタスクは引き続き実行されます。

------
#### [ Linux & macOS ]

```
aws ssm register-target-with-maintenance-window \
    --window-id "mw-0c50858d01EXAMPLE" \
    --resource-type "RESOURCE_GROUP" \
    --target "Key=resource-groups:Name,Values=MyResourceGroup"
```

------
#### [ Windows ]

```
aws ssm register-target-with-maintenance-window ^
    --window-id "mw-0c50858d01EXAMPLE" ^
    --resource-type "RESOURCE_GROUP" ^
    --target "Key=resource-groups:Name,Values=MyResourceGroup"
```

------

**推奨用途**: すべてのリソースタイプがメンテナンスウィンドウのターゲットになるかどうかを評価せずに、リソースグループをターゲットとしてすばやく指定する場合、またはタスクでアクションを実行するリソースタイプのみ、リソースグループに含まれていることがわかっている場合に役立ちます。

**制限:** 1 つのリソースグループのみをターゲットとして指定できます。

## 例 5: リソースグループのリソースタイプをフィルタリングしてターゲットを登録する
<a name="mw-target-example-5"></a>

ローカルマシンで次のコマンドを実行して、指定したリソースグループに属する特定のリソースタイプのみを登録します。*mw-0c50858d01EXAMPLE* を自分の情報に置き換えます。このオプションを使用すると、リソースグループに属するリソースタイプのタスクを追加した場合でも、リソースタイプをフィルタに明示的に追加していない場合、タスクは実行されません。

------
#### [ Linux & macOS ]

```
aws ssm register-target-with-maintenance-window \
    --window-id "mw-0c50858d01EXAMPLE" \
    --resource-type "RESOURCE_GROUP" \
    --target "Key=resource-groups:Name,Values=MyResourceGroup" \
    "Key=resource-groups:ResourceTypeFilters,Values=AWS::EC2::Instance,AWS::ECS::Cluster"
```

------
#### [ Windows ]

```
aws ssm register-target-with-maintenance-window ^
    --window-id "mw-0c50858d01EXAMPLE" ^
    --resource-type "RESOURCE_GROUP" ^
    --target "Key=resource-groups:Name,Values=MyResourceGroup" ^
    "Key=resource-groups:ResourceTypeFilters,Values=AWS::EC2::Instance,AWS::ECS::Cluster"
```

------

**推奨用途**: メンテナンスウィンドウでアクションを実行できる AWS リソースのタイプを厳密に制御する場合、またはリソースグループに多数のリソースタイプが含まれていて、メンテナンスウィンドウログに不要なエラーレポートを含めない場合に役立ちます。

**制限:** 1 つのリソースグループのみをターゲットとして指定できます。

# ステップ 3: AWS CLI を使用してメンテナンスウィンドウにタスクを登録する
<a name="mw-cli-tutorial-tasks"></a>

チュートリアルのこのステップでは、Linux 用の Amazon Elastic Compute Cloud (Amazon EC2) インスタンスで `df` コマンドを実行する AWS Systems Manager Run Command タスクを登録します。この標準の Linux コマンドの結果は、空き領域の割合をディスクで使用されているが、インスタンスのファイルシステムです。

-または-

Linux ではなく Windows Server の Amazon EC2 インスタンスをターゲットにしている場合は、以下のコマンドの **df** を **ipconfig** に置き換えます。このコマンドからの出力には、ターゲットインスタンスのアダプターの IP アドレス、サブネットマスク、デフォルトゲートウェイに関する詳細が一覧表示されます。

他のタスクタイプを登録したり、使用可能な Systems Manager Run Command オプションを使用する準備ができたら、「[例: タスクをメンテナンスウィンドウに登録する](mw-cli-register-tasks-examples.md)」を参照してください。そのトピックでは、より現実的なシナリオを計画するのに役立つように、4 つのすべてのタスクタイプについて、また、それらの最も重要なオプションのいくつかについて、詳細な情報を提供しています。

**タスクをメンテナンスウィンドウに登録するには**

1. ローカルマシンで次のコマンドを実行します。各*リソースプレースホルダーの例*をユーザー自身の情報に置き換えます。ローカルの Windows マシンから実行するバージョンには、コマンドラインツールからコマンドを実行するのに必要なエスケープ文字 (/) が含まれています。

------
#### [ Linux & macOS ]

   ```
   aws ssm register-task-with-maintenance-window \
       --window-id mw-0c50858d01EXAMPLE \
       --task-arn "AWS-RunShellScript" \
       --max-concurrency 1 --max-errors 1 \
       --priority 10 \
       --targets "Key=InstanceIds,Values=i-0471e04240EXAMPLE" \
       --task-type "RUN_COMMAND" \
       --task-invocation-parameters '{"RunCommand":{"Parameters":{"commands":["df"]}}}'
   ```

------
#### [ Windows ]

   ```
   aws ssm register-task-with-maintenance-window ^
       --window-id mw-0c50858d01EXAMPLE ^
       --task-arn "AWS-RunShellScript" ^
       --max-concurrency 1 --max-errors 1 ^
       --priority 10 ^
       --targets "Key=InstanceIds,Values=i-02573cafcfEXAMPLE" ^
       --task-type "RUN_COMMAND" ^
       --task-invocation-parameters={\"RunCommand\":{\"Parameters\":{\"commands\":[\"df\"]}}}
   ```

------

   システムは以下のような情報を返します。

   ```
   {
       "WindowTaskId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE"
   }
   ```

1. 作成したメンテナンスウィンドウタスクの詳細を表示するには、以下のコマンドを実行します。

------
#### [ Linux & macOS ]

   ```
   aws ssm describe-maintenance-window-tasks \
       --window-id mw-0c50858d01EXAMPLE
   ```

------
#### [ Windows ]

   ```
   aws ssm describe-maintenance-window-tasks ^
       --window-id mw-0c50858d01EXAMPLE
   ```

------

1. システムは以下のような情報を返します。

   ```
   {
       "Tasks": [
           {
               "WindowId": "mw-0c50858d01EXAMPLE",
               "WindowTaskId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE",
               "TaskArn": "AWS-RunShellScript",
               "Type": "RUN_COMMAND",
               "Targets": [
                   {
                       "Key": "InstanceIds",
                       "Values": [
                           "i-02573cafcfEXAMPLE"
                       ]
                   }
               ],
               "TaskParameters": {},
               "Priority": 10,
               "ServiceRoleArn": "arn:aws:iam::123456789012:role/MyMaintenanceWindowServiceRole",
               "MaxConcurrency": "1",
               "MaxErrors": "1"
           }
       ]
   }
   ```

1. 「[ステップ 1: AWS CLI を使用してメンテナンスウィンドウを作成する](mw-cli-tutorial-create-mw.md)」で指定したスケジュールに基づいて、タスクを実行する時間になるまで待ちます。たとえば、**--schedule "rate(5 minutes)"** を指定した場合は、5 分待ちます。その後、以下のコマンドを実行して、このタスクで発生した実行に関する情報を表示します。

------
#### [ Linux & macOS ]

   ```
   aws ssm describe-maintenance-window-executions \
       --window-id mw-0c50858d01EXAMPLE
   ```

------
#### [ Windows ]

   ```
   aws ssm describe-maintenance-window-executions ^
       --window-id mw-0c50858d01EXAMPLE
   ```

------

   システムは以下のような情報を返します。

   ```
   {
       "WindowExecutions": [
           {
               "WindowId": "mw-0c50858d01EXAMPLE",
               "WindowExecutionId": "14bea65d-5ccc-462d-a2f3-e99c8EXAMPLE",
               "Status": "SUCCESS",
               "StartTime": 1557593493.096,
               "EndTime": 1557593498.611
           }
       ]
   }
   ```

**ヒント**  
タスクが正常に実行した後、メンテナンスウィンドウが実行される頻度を減らすことができます。例えば、以下のコマンドを実行して頻度を週に 1 回に減らします。*mw-0c50858d01EXAMPLE* を自分の情報に置き換えます。  

```
aws ssm update-maintenance-window \
    --window-id mw-0c50858d01EXAMPLE \
    --schedule "rate(7 days)"
```

```
aws ssm update-maintenance-window ^
    --window-id mw-0c50858d01EXAMPLE ^
    --schedule "rate(7 days)"
```
メンテナンスウィンドウのスケジュール管理の詳細については、「[リファレンス: Systems Manager の cron 式および rate 式](reference-cron-and-rate-expressions.md)」と「[メンテナンスウィンドウのスケジューリングおよび有効期間のオプション](maintenance-windows-schedule-options.md)」を参照してください。  
AWS Command Line Interface (AWS CLI) を使用してメンテナンスウィンドウを変更する方法については、「[チュートリアル : AWS CLI を使用してメンテナンスウィンドウを更新する](maintenance-windows-cli-tutorials-update.md)」を参照してください。

AWS CLI コマンドによりメンテナンスウィンドウのタスクとその実行に関する詳細を表示する演習については、「[チュートリアル: AWS CLI を使用してタスクおよびタスク実行に関する情報を確認する](mw-cli-tutorial-task-info.md)」に進みます。

**チュートリアルコマンド出力へのアクセス**  
AWS CLI を使用して、メンテナンスウィンドウのタスク実行に関連付けられた Run Command コマンドの*出力*を表示することは、このチュートリアルの範囲外です。

ただし、AWS CLI を使用してこのデータを表示できます。(コマンド出力をコンソールやログファイルに保存するように、メンテナンスウィンドウを設定している場合、Systems Manager コンソールでも、Amazon Simple Storage Service (Amazon S3) バケットに保存されているログファイルでも、出力を表示できます)。Linux の EC2 インスタンスでの **df** コマンドの出力は以下のようになります。

```
Filesystem 1K-blocks Used Available Use% Mounted on

devtmpfs 485716 0 485716 0% /dev

tmpfs 503624 0 503624 0% /dev/shm

tmpfs 503624 328 503296 1% /run

tmpfs 503624 0 503624 0% /sys/fs/cgroup

/dev/xvda1 8376300 1464160 6912140 18% /
```

**ipconfig** の EC2 インスタンスでの Windows Server コマンドの出力は以下のようになります。

```
Windows IP Configuration


Ethernet adapter Ethernet 2:

   Connection-specific DNS Suffix  . : example.com
   IPv4 Address. . . . . . . . . . . : 10.24.34.0/23
   Subnet Mask . . . . . . . . . . . : 255.255.255.255
   Default Gateway . . . . . . . . . : 0.0.0.0

Ethernet adapter Ethernet:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . : abc1.wa.example.net

Wireless LAN adapter Local Area Connection* 1:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :

Wireless LAN adapter Wi-Fi:

   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : fe80::100b:c234:66d6:d24f%4
   IPv4 Address. . . . . . . . . . . : 192.0.2.0
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 192.0.2.0

Ethernet adapter Bluetooth Network Connection:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :
```

# 例: タスクをメンテナンスウィンドウに登録する
<a name="mw-cli-register-tasks-examples"></a>

「[メンテナンスウィンドウを使用してタスクを登録する](mw-cli-tutorial-tasks.md)」に示されているように、AWS Command Line Interface (AWS CLI) を使用してメンテナンスウィンドウに Run Command (AWS Systems Manager のツール) でタスクを登録できます。このトピックで後ほど示すように、Systems Manager Automation ワークフローのタスク、AWS Lambda 関数、AWS Step Functions タスクを登録することもできます。

**注記**  
メンテナンスウィンドウの Run Command タイプのタスクには、1つ以上のターゲットを指定します。タスクに応じて、他のメンテナンスウィンドウタスクタイプ (Automation、AWS Lambda、AWS Step Functions) に対するターゲットはオプションです。ターゲットを指定しないタスクの実行の詳細については、「[ターゲットのないメンテナンスウィンドウタスクを登録](maintenance-windows-targetless-tasks.md)」を参照してください。

このトピックでは、AWS Command Line Interface (AWS CLI) コマンド `register-task-with-maintenance-window` を使用して、サポートされている 4 つのタスクタイプをそれぞれメンテナンスウィンドウに登録する例を示しています。それらの例はデモ専用ですが、作業タスクの登録コマンドを作成するように変更できます。

**--cli-input-json オプションの使用**  
タスクオプションをより適切に管理するために、`--cli-input-json` コマンドオプションに、JSON ファイルで参照されるオプション値を指定できます。

以下の例で提供しているサンプル JSON ファイルコンテンツを使用するには、ローカルマシンで以下の手順を実行します。

1. `MyRunCommandTask.json`、`MyAutomationTask.json` などの名前、または他の任意の名前でファイルを作成します。

1. そのファイルに JSON サンプルの内容をコピーします。

1. タスク登録用にその内容を変更し、そのファイルを保存します。

1. ファイルを保存したのと同じディレクトリで、以下のコマンドを実行します。ファイル名を *MyFile.json* に置き換えます。

------
#### [ Linux & macOS ]

   ```
   aws ssm register-task-with-maintenance-window \
       --cli-input-json file://MyFile.json
   ```

------
#### [ Windows ]

   ```
   aws ssm register-task-with-maintenance-window ^
       --cli-input-json file://MyFile.json
   ```

------

**メンテナンスウィンドウタスクの登録における疑似パラメータ**  
いくつかの例では、ID 情報をタスクに渡すための方法として*疑似パラメータ*を使用します。例えば、`{{TARGET_ID}}` と `{{RESOURCE_ID}}` は、AWS リソースの ID を Automation 、Lambda、Step Functions のタスクに渡すために使用されます。`--task-invocation-parameters` コンテンツ内の疑似パラメータの詳細については、「[メンテナンスウィンドウのタスクを登録する際の疑似パラメータの使用](maintenance-window-tasks-pseudo-parameters.md)」を参照してください。

**詳細情報**  
+ ["register-task-with-maintenance-window" コマンドのパラメーターオプション](mw-cli-task-options.md).
+ [register-task-with-maintenance-window「 コマンドリファレンス」](https://docs.aws.amazon.com/cli/latest/reference/ssm/register-task-with-maintenance-window.html)の*「AWS CLI」*を参照してください。
+ 「*[https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_RegisterTaskWithMaintenanceWindow.html](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_RegisterTaskWithMaintenanceWindow.html) API リファレンス*」の「AWS Systems Manager」

## タスクの登録例
<a name="task-examples"></a>

以下のセクションでは、サポートされているタスクタイプを登録するサンプルの AWS CLI コマンドと、`--cli-input-json` オプションで用できる JSON サンプルを示しています。

### Systems Manager Run Command タスクを登録する
<a name="register-tasks-tutorial-run-command"></a>

以下の例は、AWS CLI を使用して、メンテナンスウィンドウで Systems Manager Run Command タスクを登録する方法を示しています。

------
#### [ Linux & macOS ]

```
aws ssm register-task-with-maintenance-window \
    --window-id mw-0c50858d01EXAMPLE \
    --task-arn "AWS-RunShellScript" \
    --max-concurrency 1 --max-errors 1 --priority 10 \
    --targets "Key=InstanceIds,Values=i-02573cafcfEXAMPLE" \
    --task-type "RUN_COMMAND" \
    --task-invocation-parameters '{"RunCommand":{"Parameters":{"commands":["df"]}}}'
```

------
#### [ Windows ]

```
aws ssm register-task-with-maintenance-window ^
    --window-id mw-0c50858d01EXAMPLE ^
    --task-arn "AWS-RunShellScript" ^
    --max-concurrency 1 --max-errors 1 --priority 10 ^
    --targets "Key=InstanceIds,Values=i-02573cafcfEXAMPLE" ^
    --task-type "RUN_COMMAND" ^
    --task-invocation-parameters "{\"RunCommand\":{\"Parameters\":{\"commands\":[\"df\"]}}}"
```

------

**`--cli-input-json` ファイルオプションで使用する JSON コンテンツ:**

```
{
    "TaskType": "RUN_COMMAND",
    "WindowId": "mw-0c50858d01EXAMPLE",
    "Description": "My Run Command task to update SSM Agent on an instance",
    "MaxConcurrency": "1",
    "MaxErrors": "1",
    "Name": "My-Run-Command-Task",
    "Priority": 10,
    "Targets": [
        {
            "Key": "WindowTargetIds",
            "Values": [
                "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE"
            ]
        }
    ],
    "TaskArn": "AWS-UpdateSSMAgent",
    "TaskInvocationParameters": {
        "RunCommand": {
            "Comment": "A TaskInvocationParameters test comment",
            "NotificationConfig": {
                "NotificationArn": "arn:aws:sns:region:123456789012:my-sns-topic-name",
                "NotificationEvents": [
                    "All"
                ],
                "NotificationType": "Invocation"
            },
            "OutputS3BucketName": "amzn-s3-demo-bucket",
            "OutputS3KeyPrefix": "S3-PREFIX",
            "TimeoutSeconds": 3600
        }
    }
}
```

### Systems Manager Automation タスクを登録する
<a name="register-tasks-tutorial-automation"></a>

以下の例では、AWS CLI を使用して Systems Manager Automation タスクをメンテナンスウィンドウに登録する方法を示しています。

** AWS CLI コマンド:**

------
#### [ Linux & macOS ]

```
aws ssm register-task-with-maintenance-window \
    --window-id "mw-0c50858d01EXAMPLE" \
    --task-arn "AWS-RestartEC2Instance" \
    --service-role-arn arn:aws:iam::123456789012:role/MyMaintenanceWindowServiceRole \
    --task-type AUTOMATION \
    --task-invocation-parameters "Automation={DocumentVersion=5,Parameters={InstanceId='{{RESOURCE_ID}}'}}" \
    --priority 0 --name "My-Restart-EC2-Instances-Automation-Task" \
    --description "Automation task to restart EC2 instances"
```

------
#### [ Windows ]

```
aws ssm register-task-with-maintenance-window ^
    --window-id "mw-0c50858d01EXAMPLE" ^
    --task-arn "AWS-RestartEC2Instance" ^
    --service-role-arn arn:aws:iam::123456789012:role/MyMaintenanceWindowServiceRole ^
    --task-type AUTOMATION ^
    --task-invocation-parameters "Automation={DocumentVersion=5,Parameters={InstanceId='{{TARGET_ID}}'}}" ^
    --priority 0 --name "My-Restart-EC2-Instances-Automation-Task" ^
    --description "Automation task to restart EC2 instances"
```

------

**`--cli-input-json` ファイルオプションで使用する JSON コンテンツ:**

```
{
    "WindowId": "mw-0c50858d01EXAMPLE",
        "TaskArn": "AWS-PatchInstanceWithRollback",
    "TaskType": "AUTOMATION","TaskInvocationParameters": {
        "Automation": {
            "DocumentVersion": "1",
            "Parameters": {
                "instanceId": [
                    "{{RESOURCE_ID}}"
                ]
            }
        }
    }
}
```

### AWS Lambda タスクを登録する
<a name="register-tasks-tutorial-lambda"></a>

以下の例では、AWS CLI を使用して Lambda 関数タスクをメンテナンスウィンドウに登録する方法を示しています。

これらの例では、Lambda 関数を作成したユーザーがその関数に `SSMrestart-my-instances` という名前を付け、`instanceId` と `targetType` という名前の 2 つのパラメータを作成したとします。

**重要**  
Maintenance Windows の IAM ポリシーでは、Lambda 関数名 (またはエイリアス) の前にプレフィックス `SSM` を付ける必要があります。このタイプのタスクを登録する前に、AWS Lambda で `SSM` を含めるようにその名前を更新します。例えば、Lambda 関数名が `MyLambdaFunction` の場合は、`SSMMyLambdaFunction` に変更します。

** AWS CLI コマンド:**

------
#### [ Linux & macOS ]

**重要**  
AWS CLI のバージョン 2 を使用している場合、Lambda ペイロードが base64 エンコードでなければ、以下のコマンドにオプション `--cli-binary-format raw-in-base64-out` を含める必要があります。`cli_binary_format` オプションは、バージョン 2 でしか使用できません。これと他の AWS CLI `config`ファイル設定については、*AWS Command Line Interface ユーザーガイド*で「[サポート対象 `config` ファイル設定](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-settings)」を参照してください。

```
aws ssm register-task-with-maintenance-window \
    --window-id "mw-0c50858d01EXAMPLE" \
    --targets "Key=WindowTargetIds,Values=e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" \
    --priority 2 --max-concurrency 10 --max-errors 5 --name "My-Lambda-Example" \
    --description "A description for my LAMBDA example task" --task-type "LAMBDA" \
    --task-arn "arn:aws:lambda:region:123456789012:function:serverlessrepo-SSMrestart-my-instances-C4JF9EXAMPLE" \
    --task-invocation-parameters '{"Lambda":{"Payload":"{\"InstanceId\":\"{{RESOURCE_ID}}\",\"targetType\":\"{{TARGET_TYPE}}\"}","Qualifier": "$LATEST"}}'
```

------
#### [ PowerShell ]

**重要**  
AWS CLI のバージョン 2 を使用している場合、Lambda ペイロードが base64 エンコードでなければ、以下のコマンドにオプション `--cli-binary-format raw-in-base64-out` を含める必要があります。`cli_binary_format` オプションは、バージョン 2 でしか使用できません。これと他の AWS CLI `config`ファイル設定については、*AWS Command Line Interface ユーザーガイド*で「[サポート対象 `config` ファイル設定](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-settings)」を参照してください。

```
aws ssm register-task-with-maintenance-window `
    --window-id "mw-0c50858d01EXAMPLE" `
    --targets "Key=WindowTargetIds,Values=e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" `
    --priority 2 --max-concurrency 10 --max-errors 5 --name "My-Lambda-Example" `
    --description "A description for my LAMBDA example task" --task-type "LAMBDA" `
    --task-arn "arn:aws:lambda:region:123456789012:function:serverlessrepo-SSMrestart-my-instances-C4JF9EXAMPLE" `
    --task-invocation-parameters '{\"Lambda\":{\"Payload\":\"{\\\"InstanceId\\\":\\\"{{RESOURCE_ID}}\\\",\\\"targetType\\\":\\\"{{TARGET_TYPE}}\\\"}\",\"Qualifier\": \"$LATEST\"}}'
```

------

**`--cli-input-json` ファイルオプションで使用する JSON コンテンツ:**

```
{
    "WindowId": "mw-0c50858d01EXAMPLE",
    "Targets": [
        {
            "Key": "WindowTargetIds",
            "Values": [
                "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE"
            ]
        }
    ],
    "TaskArn": "SSM_RestartMyInstances",
    "TaskType": "LAMBDA",
    "MaxConcurrency": "10",
    "MaxErrors": "10",
    "TaskInvocationParameters": {
        "Lambda": {
            "ClientContext": "ew0KICAi--truncated--0KIEXAMPLE",
            "Payload": "{ \"instanceId\": \"{{RESOURCE_ID}}\", \"targetType\": \"{{TARGET_TYPE}}\" }",
            "Qualifier": "$LATEST"
        }
    },
    "Name": "My-Lambda-Task",
    "Description": "A description for my LAMBDA task",
    "Priority": 5
}
```

### Step Functions タスクを登録する
<a name="register-tasks-tutorial-step-functions"></a>

以下の例では、AWS CLI を使用して Step Functions ステートマシンタスクをメンテナンスウィンドウに登録する方法を示しています。

**注記**  
メンテナンスウィンドウタスクは、Step Functions 標準ステートマシンワークフローのみをサポートします。Express ステートマシンワークフローはサポートされていません。ステートマシンワークフロータイプの詳細については、「AWS Step Functions デベロッパーガイド」の「[標準ワークフローと Express ワークフロー](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-standard-vs-express.html)」を参照してください。

これらの例では、ステップ関数ステートマシンを作成したユーザーが、`SSMMyStateMachine` というパラメータを指定して、`instanceId` という名前のステートマシンを作成しました。

**重要**  
Maintenance Windows の AWS Identity and Access Management (IAM) ポリシーでは、Step Functions ステートマシン名の前に `SSM` でプレフィックスを付ける必要があります。このタイプのタスクを登録する前に、AWS Step Functions で `SSM` を含めるようにその名前を更新する必要があります。たとえば、ステートマシン名が `MyStateMachine` の場合は、`SSMMyStateMachine` に変更します。

** AWS CLI コマンド:**

------
#### [ Linux & macOS ]

```
aws ssm register-task-with-maintenance-window \
    --window-id "mw-0c50858d01EXAMPLE" \
    --targets "Key=WindowTargetIds,Values=e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" \
    --task-arn arn:aws:states:region:123456789012:stateMachine:SSMMyStateMachine-MggiqEXAMPLE \
    --task-type STEP_FUNCTIONS \
    --task-invocation-parameters '{"StepFunctions":{"Input":"{\"InstanceId\":\"{{RESOURCE_ID}}\"}", "Name":"{{INVOCATION_ID}}"}}' \
    --priority 0 --max-concurrency 10 --max-errors 5 \
    --name "My-Step-Functions-Task" --description "A description for my Step Functions task"
```

------
#### [ PowerShell ]

```
aws ssm register-task-with-maintenance-window `
    --window-id "mw-0c50858d01EXAMPLE" `
    --targets "Key=WindowTargetIds,Values=e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" `
    --task-arn arn:aws:states:region:123456789012:stateMachine:SSMMyStateMachine-MggiqEXAMPLE `
    --task-type STEP_FUNCTIONS `
    --task-invocation-parameters '{\"StepFunctions\":{\"Input\":\"{\\\"InstanceId\\\":\\\"{{RESOURCE_ID}}\\\"}\", \"Name\":\"{{INVOCATION_ID}}\"}}' `
    --priority 0 --max-concurrency 10 --max-errors 5 `
    --name "My-Step-Functions-Task" --description "A description for my Step Functions task"
```

------

**`--cli-input-json` ファイルオプションで使用する JSON コンテンツ:**

```
{
    "WindowId": "mw-0c50858d01EXAMPLE",
    "Targets": [
        {
            "Key": "WindowTargetIds",
            "Values": [
                "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE"
            ]
        }
    ],
    "TaskArn": "SSM_MyStateMachine",
    "TaskType": "STEP_FUNCTIONS",
    "MaxConcurrency": "10",
    "MaxErrors": "10",
    "TaskInvocationParameters": {
        "StepFunctions": {
            "Input": "{ \"instanceId\": \"{{TARGET_ID}}\" }",
            "Name": "{{INVOCATION_ID}}"
        }
    },
    "Name": "My-Step-Functions-Task",
    "Description": "A description for my Step Functions task",
    "Priority": 5
}
```

# "register-task-with-maintenance-window" コマンドのパラメーターオプション
<a name="mw-cli-task-options"></a>

**register-task-with-maintenance-window** コマンドには、必要に応じてタスクを設定するためのいくつかのオプションがあります。それらは、必須のオプション、任意のオプション、1 つのメンテナンスウィンドウタスクタイプにのみ適用されるオプションです。

このトピックでは、このチュートリアルのセクションでサンプルを使用するのに役立つ、これらのオプションのいくつかについて情報を提供します。すべてのコマンドオプションについては、*AWS CLI コマンドリファレンス*の「**[https://docs.aws.amazon.com/cli/latest/reference/ssm/register-task-with-maintenance-window.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/register-task-with-maintenance-window.html)**」を参照してください。

**コマンドオプション: `--task-arn`**  
`--task-arn` オプションでは、タスクが実行するリソースを指定するために使用します。以下の表に示しているように、指定する値は登録するタスクのタイプによって異なります。


**メンテナンスウィンドウタスクの TaskArn 形式**  

| メンテナンスウィンドウタスクのタイプ | TaskArn 値 | 
| --- | --- | 
|  **`RUN_COMMAND`** および ** `AUTOMATION`**  |  `TaskArn` は SSM ドキュメント名または Amazon リソースネーム (ARN) です。以下に例を示します。 `AWS-RunBatchShellScript`  -または- `arn:aws:ssm:region:111122223333:document/My-Document`.  | 
|  **`LAMBDA`**  |  `TaskArn` は関数名または ARN です。以下に例を示します。 `SSMMy-Lambda-Function` -または- `arn:aws:lambda:region:111122223333:function:SSMMyLambdaFunction`.  Maintenance Windows の IAM ポリシーでは、Lambda 関数名 (またはエイリアス) の前にプレフィックス `SSM` を付ける必要があります。このタイプのタスクを登録する前に、AWS Lambda で `SSM` を含めるようにその名前を更新します。例えば、Lambda 関数名が `MyLambdaFunction` の場合は、`SSMMyLambdaFunction` に変更します。   | 
|  **`STEP_FUNCTIONS`**  |  `TaskArn` はステートマシン ARN です。以下に例を示します。 `arn:aws:states:us-east-2:111122223333:stateMachine:SSMMyStateMachine`.  メンテナンスウィンドウの IAM ポリシーでは、Step Functions ステートマシン名の前に `SSM` を付ける必要があります。このタイプのタスクを登録する前に、AWS Step Functions を含むように `SSM` の名前を更新する必要があります。たとえば、ステートマシン名が `MyStateMachine` の場合は、`SSMMyStateMachine` に変更します。   | 

**コマンドオプション: `--service-role-arn`**  
メンテナンスウィンドウタスクを実行するときに AWS Systems Manager が引き受けるロール。

詳細については、[Maintenance Windows を設定する](setting-up-maintenance-windows.md)を参照してください。

**コマンドオプション: `--task-invocation-parameters`**  
`--task-invocation-parameters` オプションを使用して、4 つのタスクタイプのそれぞれに固有のパラメータを指定します。以下の表では、4 つのタスクタイプそれぞれでサポートされているパラメータを示しています。

**注記**  
`--task-invocation-parameters` コンテンツでの \$1\$1TARGET\$1ID\$1\$1 などの疑似パラメータの使用については、「[メンテナンスウィンドウのタスクを登録する際の疑似パラメータの使用](maintenance-window-tasks-pseudo-parameters.md)」を参照してください。

メンテナンスウィンドウタスク用のタスク呼び出しパラメータのオプション


| メンテナンスウィンドウタスクのタイプ | 使用できるパラメータ  | 例 | 
| --- | --- | --- | 
|  **`RUN_COMMAND`**  |  `Comment` `DocumentHash` `DocumentHashType` `NotificationConfig` `OutputS3BucketName` `OutPutS3KeyPrefix` `Parameters` `ServiceRoleArn` `TimeoutSeconds`  |  <pre>"TaskInvocationParameters": {<br />        "RunCommand": {<br />            "Comment": "My Run Command task comment",<br />            "DocumentHash": "6554ed3d--truncated--5EXAMPLE",<br />            "DocumentHashType": "Sha256",<br />            "NotificationConfig": {<br />                "NotificationArn": "arn:aws:sns:region:123456789012:my-sns-topic-name",<br />                "NotificationEvents": [<br />                    "FAILURE"<br />                ],<br />                "NotificationType": "Invocation"<br />            },<br />            "OutputS3BucketName": "amzn-s3-demo-bucket",<br />            "OutputS3KeyPrefix": "S3-PREFIX",<br />            "Parameters": {<br />                "commands": [<br />                    "Get-ChildItem$env: temp-Recurse|Remove-Item-Recurse-force"<br />                ]<br />            },<br />            "ServiceRoleArn": "arn:aws:iam::123456789012:role/MyMaintenanceWindowServiceRole",<br />            "TimeoutSeconds": 3600<br />        }<br />    }</pre>  | 
|  **`AUTOMATION`**  |  `DocumentVersion` `Parameters`  |  <pre>"TaskInvocationParameters": {<br />        "Automation": {<br />            "DocumentVersion": "3",<br />            "Parameters": {<br />                "instanceid": [<br />                    "{{TARGET_ID}}"<br />                ]<br />            }<br />        }<br />    }</pre>  | 
|  **`LAMBDA`**  |  `ClientContext` `Payload` `Qualifier`  |  <pre>"TaskInvocationParameters": {<br />        "Lambda": {<br />            "ClientContext": "ew0KICAi--truncated--0KIEXAMPLE",<br />            "Payload": "{ \"targetId\": \"{{TARGET_ID}}\", \"targetType\": \"{{TARGET_TYPE}}\" }",<br />            "Qualifier": "$LATEST"<br />        }<br />    }</pre>  | 
|  **`STEP_FUNCTIONS`**  |  `Input` `Name`  |  <pre>"TaskInvocationParameters": {<br />        "StepFunctions": {<br />            "Input": "{ \"targetId\": \"{{TARGET_ID}}\" }",<br />            "Name": "{{INVOCATION_ID}}"<br />        }<br />    }</pre>  | 