

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

# コマンドを大規模に実行する
<a name="send-commands-multiple"></a>

AWS Systems Manager のツールである Run Command を使用すると、`targets` を使用してマネージドノードのフリートでコマンドを実行できます。`targets` パラメータは、マネージドノードに指定したタグに基づいて `Key,Value` の組み合わせを受け取ります。コマンドを実行すると、システムは指定されたタグと一致するすべてのマネージドノードでコマンドの実行を試みます。マネージドインスタンスへのタグ付けの詳細については、「AWS リソースのタグ付けユーザーガイド」の「[AWS リソースのタグ付け](https://docs.aws.amazon.com/tag-editor/latest/userguide/tag-editor.html)」を参照してください。マネージド IoT デバイスへのタグ付けの詳細については、「*AWS IoT Greengrass Version 2 デベロッパーガイド*」の ｢[AWS IoT Greengrass Version 2 リソースのタグ付け](https://docs.aws.amazon.com/greengrass/v2/developerguide/tag-resources.html)｣を参照してください。

以下のセクションで説明しているように、`targets` パラメータを使用して、特定のマネージドノード ID のリストをターゲットにできます。

数百または数千のマネージドノードでコマンド実行を制御するために、Run Command は、リクエストを同時に処理できるノード数とコマンドがキャンセルされるまでに投げられるエラー数を制限するためのパラメータも用意されています。

**Topics**
+ [複数のマネージドノードをターゲットにする](#send-commands-targeting)
+ [レート制御の使用](#send-commands-rate)

## 複数のマネージドノードをターゲットにする
<a name="send-commands-targeting"></a>

タグ、AWS リソースグループ名、またはマネージドノード ID を指定してコマンドを実行しマネージドノードをターゲットにできます。

次の例では、AWS Command Line Interface (AWS CLI) から Run Command を使用した場合のコマンド形式を示します。各{{リソースプレースホルダーの例}}をユーザー自身の情報に置き換えます。このセクションのサンプルコマンドは、`[...]` で省略されています。

**例 1: タグをターゲットにする**

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

```
aws ssm send-command \
    --document-name {{document-name}} \
    --targets Key=tag:{{tag-name}},Values={{tag-value}} \
    [...]
```

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

```
aws ssm send-command ^
    --document-name {{document-name}} ^
    --targets Key=tag:{{tag-name}},Values={{tag-value}} ^
    [...]
```

------

**例 2: AWS リソースグループを名前に基づいてターゲットにする**

コマンドごとに最大 1 つのリソースグループ名を指定できます。リソースグループを作成する場合は、リソースタイプとして `AWS::SSM:ManagedInstance` と `AWS::EC2::Instance` をグループ化の条件に含めることをお勧めします。

**注記**  
リソースグループをターゲットとするコマンドを送信するには、そのグループに属するリソースをリストまたは表示する AWS Identity and Access Management (IAM) 許可が付与されている必要があります。詳細については、*AWS Resource Groups ユーザーガイド* の「[許可の設定](https://docs.aws.amazon.com/ARG/latest/userguide/gettingstarted-prereqs.html#gettingstarted-prereqs-permissions)」を参照してください。

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

```
aws ssm send-command \    
    --document-name {{document-name}} \
    --targets Key=resource-groups:Name,Values={{resource-group-name}} \
    [...]
```

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

```
aws ssm send-command ^    
    --document-name {{document-name}} ^
    --targets Key=resource-groups:Name,Values={{resource-group-name}} ^
    [...]
```

------

**例 3: リソースタイプにより AWS リソースグループをターゲットにする**

コマンドごとに最大 5 つのリソースグループタイプを指定できます。リソースグループを作成する場合は、リソースタイプとして `AWS::SSM:ManagedInstance` と `AWS::EC2::Instance` をグループ化の条件に含めることをお勧めします。

**注記**  
リソースグループをターゲットとするコマンドを送信するには、そのグループに属するリソースをリストまたは表示する IAM アクセス許可が付与されている必要があります。詳細については、*AWS Resource Groups ユーザーガイド* の「[許可の設定](https://docs.aws.amazon.com/ARG/latest/userguide/gettingstarted-prereqs.html#gettingstarted-prereqs-permissions)」を参照してください。

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

```
aws ssm send-command \    
    --document-name {{document-name}} \
    --targets Key=resource-groups:ResourceTypeFilters,Values={{resource-type-1}},{{resource-type-2}} \
    [...]
```

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

```
aws ssm send-command ^    
    --document-name {{document-name}} ^
    --targets Key=resource-groups:ResourceTypeFilters,Values={{resource-type-1}},{{resource-type-2}} ^
    [...]
```

------

**例 4: インスタンス ID をターゲットにする**

以下の例では、`instanceids` キー と `targets` パラメータを使用してマネージドノードをターゲットにする方法を示します。各デバイスには mi-{{ID\_number}} が割り当てられているので、このキーを使ってマネージド AWS IoT Greengrass コアデバイスをターゲットにすることができます。デバイス ID は AWS Systems Manager のツールである Fleet Manager で確認できます。

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

```
aws ssm send-command \
    --document-name {{document-name}} \
    --targets Key=instanceids,Values={{instance-ID-1}},{{instance-ID-2}},{{instance-ID-3}} \
    [...]
```

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

```
aws ssm send-command ^
    --document-name {{document-name}} ^
    --targets Key=instanceids,Values={{instance-ID-1}},{{instance-ID-2}},{{instance-ID-3}} ^
    [...]
```

------

`Development`、`Test`、`Pre-production`、`Production` の `Environment` と `Values` という名前の `Key` を使用して、複数の異なる環境のマネージドノードに対してタグ付けされると、次の構文の `targets` パラメータを使用してこれらの環境の *1 つ*にあるすべてのマネージドノードにコマンドを送信できます。

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

```
aws ssm send-command \
    --document-name {{document-name}} \
    --targets Key=tag:{{Environment}},Values={{Development}} \
    [...]
```

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

```
aws ssm send-command ^
    --document-name {{document-name}} ^
    --targets Key=tag:{{Environment}},Values={{Development}} ^
    [...]
```

------

`Values` リストに追加して、他の環境の追加マネージドノードをターゲットにすることができます。カンマを使用して項目を区切ります。

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

```
aws ssm send-command \
    --document-name {{document-name}} \
    --targets Key=tag:{{Environment}},Values={{Development}},{{Test}},{{Pre-production}} \
    [...]
```

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

```
aws ssm send-command ^
    --document-name {{document-name}} ^
    --targets Key=tag:{{Environment}},Values={{Development}},{{Test}},{{Pre-production}} ^
    [...]
```

------

**バリエーション**: 複数の `Key` 条件を使用してターゲットを絞り込む

複数の `Key` 条件を含めて、コマンドのターゲットの数を絞り込むことができます。複数の `Key` 条件を含めると、システムは*全て*の条件を満たマネージドノードをターゲットにします。次のコマンドは、Finance Department *および*データベース サーバーロールに対してタグが付いているすべてのマネージドノードをターゲットとします。

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

```
aws ssm send-command \
    --document-name {{document-name}} \
    --targets Key=tag:{{Department}},Values={{Finance}} Key=tag:{{ServerRole}},Values={{Database}} \
    [...]
```

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

```
aws ssm send-command ^
    --document-name {{document-name}} ^
    --targets Key=tag:{{Department}},Values={{Finance}} Key=tag:{{ServerRole}},Values={{Database}} ^
    [...]
```

------

**バリエーション**: `Key` および `Value` 条件を使用する

前の例を拡大し、`Values` 条件の項目を追加して含めて、複数の部門とサーバーロールを対象にすることができます。

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

```
aws ssm send-command \
    --document-name {{document-name}} \
    --targets Key=tag:{{Department}},Values={{Finance}},{{Marketing}} Key=tag:{{ServerRole}},Values={{WebServer}},{{Database}} \
    [...]
```

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

```
aws ssm send-command ^
    --document-name {{document-name}} ^
    --targets Key=tag:{{Department}},Values={{Finance}},{{Marketing}} Key=tag:{{ServerRole}},Values={{WebServer}},{{Database}} ^
    [...]
```

------

**バリエーション**: 複数の `Values` 条件を使用してタグ付けされたマネージドノードをターゲットにします

複数の異なる環境のマネージドノードに対して `Sales` および `Finance` のうち `Department` と `Values` という `Key` を使用してタグ付けされた場合、次の `targets` パラメータを使用した構文でこれらの環境のすべてのマネージドノードに対してコマンドを送信できます。

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

```
aws ssm send-command \
    --document-name {{document-name}} \
    --targets Key=tag:{{Department}},Values={{Sales,Finance}} \
    [...]
```

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

```
aws ssm send-command ^
    --document-name {{document-name}} ^
    --targets Key=tag:{{Department}},Values={{Sales,Finance}} ^
    [...]
```

------

各キーには、最大 5 つのタグキーと 5 つの値を指定できます。

タグキー (タグの名前) またはタグ値にスペースが含まれる場合、次の例に示すようにタグキーまたは値を疑問符で囲みます。

**例**: `Value` タグにスペースが含まれる場合

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

```
aws ssm send-command \
    --document-name {{document-name}} \
    --targets Key=tag:{{OS}},Values="{{Windows Server 2016"}} \
    [...]
```

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

```
aws ssm send-command ^
    --document-name {{document-name}} ^
    --targets Key=tag:{{OS}},Values="{{Windows Server 2016"}} ^
    [...]
```

------

**例**: `tag` キーと `Value` にスペースが含まれる場合

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

```
aws ssm send-command \
    --document-name {{document-name}} \
    --targets Key="tag:{{Operating System}}",Values="{{Windows Server 2016"}} \
    [...]
```

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

```
aws ssm send-command ^
    --document-name {{document-name}} ^
    --targets Key="tag:{{Operating System}}",Values="{{Windows Server 2016"}} ^
    [...]
```

------

**例**: `Values` のリスト内にある 1 つの項目にスペースが含まれる場合

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

```
aws ssm send-command \
    --document-name {{document-name}} \
    --targets Key=tag:{{Department}},Values={{"Sales","Finance","Systems Mgmt"}} \
    [...]
```

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

```
aws ssm send-command ^
    --document-name {{document-name}} ^
    --targets Key=tag:{{Department}},Values={{"Sales","Finance","Systems Mgmt"}} ^
    [...]
```

------

## レート制御の使用
<a name="send-commands-rate"></a>

コマンドがグループ内のマネージドノードに送信されるレートは、*同時実行制御*と*エラー制御*を使用して制御できます。

**Topics**
+ [同時実行制御を使用する](#send-commands-velocity)
+ [エラー制御を使用する](#send-commands-maxerrors)

### 同時実行制御を使用する
<a name="send-commands-velocity"></a>

`max-concurrency` パラメータ **[Run a command]** (コマンドを実行) ページの **[Concurrency]** (同時実行数) オプションを使用して、同時にコマンドを実行するマネージドノードの数を制御できます。マネージドノードの絶対数 (**10** など) またはターゲットセットの割合 (**10%** など) を指定できます。キューシステムにより、コマンドは 1 つのノードに送信され、システムがこの最初の呼び出しを確認するのを待ってから、さらに 2 つのノードにコマンドが送信されます。システムで `max-concurrency` の値に達するまで、指数関数的に多くのノードにコマンドを送ります。`max-concurrency` のデフォルト値は 50 です。次の例は、`max-concurrency` パラメータの値を指定する方法を示しています。

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

```
aws ssm send-command \
    --document-name {{document-name}} \
    --max-concurrency {{10}} \
    --targets Key=tag:{{Environment}},Values={{Development}} \
    [...]
```

```
aws ssm send-command \
    --document-name {{document-name}} \
    --max-concurrency {{10}}% \
    --targets Key=tag:{{Department}},Values={{Finance}},{{Marketing}} Key=tag:{{ServerRole}},Values={{WebServer}},{{Database}} \
    [...]
```

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

```
aws ssm send-command ^
    --document-name {{document-name}} ^
    --max-concurrency {{10}} ^
    --targets Key=tag:{{Environment}},Values={{Development}} ^
    [...]
```

```
aws ssm send-command ^
    --document-name {{document-name}} ^
    --max-concurrency {{10}}% ^
    --targets Key=tag:{{Department}},Values={{Finance}},{{Marketing}} Key=tag:{{ServerRole}},Values={{WebServer}},{{Database}} ^
    [...]
```

------

### エラー制御を使用する
<a name="send-commands-maxerrors"></a>

コマンドの実行を数百または数千のマネージドノードに制限するには、`max-errors` パラメータを使用してエラー制限を設定することもできます ([**Run a command**] (コマンドを実行) ページの [**Error threshold**] (エラーのしきい値) フィールド)。このパラメータは、システムが追加のマネージドノードへのコマンドの送信を停止するまでに許可されるエラーの数を指定します。エラーの絶対数 (**10** など) またはターゲットセットのパーセント数 (**10%** など) を指定できます。たとえば、**3** を指定した場合、4 番目のエラーが受信されると、システムからコマンドが送信されなくなります。**0** を指定した場合、最初のエラー結果が返されると、追加のマネージドノードへのコマンド送信を停止します。コマンドの送信先のマネージノード数が 50 で `max-errors` を **10%** に設定した場合、6 番目のエラーが受信されると、システムから他のノードにコマンドが送信されなくなります。

`max-errors` に達したときに既にコマンドを実行中の呼び出しについては、完了はできますが、一部が失敗する場合があります。呼び出しの失敗数が `max-errors` を超えないようにするには、`max-concurrency` を **1** に設定して、一度に 1 つの呼び出しが処理されるようにします。max-errors のデフォルト値は 0 です。次の例は、`max-errors` パラメータの値を指定する方法を示しています。

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

```
aws ssm send-command \
    --document-name {{document-name}} \
    --max-errors {{10}} \
    --targets Key=tag:{{Database}},Values={{Development}} \
    [...]
```

```
aws ssm send-command \
    --document-name {{document-name}} \
    --max-errors {{10}}% \
    --targets Key=tag:{{Environment}},Values={{Development}} \
    [...]
```

```
aws ssm send-command \
    --document-name {{document-name}} \
    --max-concurrency {{1}} \
    --max-errors {{1}} \
    --targets Key=tag:{{Environment}},Values={{Production}} \
    [...]
```

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

```
aws ssm send-command ^
    --document-name {{document-name}} ^
    --max-errors {{10}} ^
    --targets Key=tag:{{Database}},Values={{Development}} ^
    [...]
```

```
aws ssm send-command ^
    --document-name {{document-name}} ^
    --max-errors {{10}}% ^
    --targets Key=tag:{{Environment}},Values={{Development}} ^
    [...]
```

```
aws ssm send-command ^
    --document-name {{document-name}} ^
    --max-concurrency {{1}} ^
    --max-errors {{1}} ^
    --targets Key=tag:{{Environment}},Values={{Production}} ^
    [...]
```

------