メニュー
Amazon Elastic Compute Cloud
Linux インスタンス用ユーザーガイド

複数のインスタンスへのコマンドの送信

targets パラメータを使用して数十、数百、または数千のインスタンスにコマンドを送信できます。現在、このパラメータは AWS CLI からコマンドを実行する場合にのみサポートされています。targets パラメータは、インスタンスに指定した Amazon EC2 タグに基づいて Key,Value の組み合わせを受け取ります。コマンドを実行すると、システムは、指定した条件と一致するすべてのインスタンスでコマンドを見つけ、実行しようとします。Amazon EC2 タグの詳細については、「Amazon EC2 リソースにタグを付ける」を参照してください。

数百または数千のインスタンスにまたがってコマンドを制御するために、Run Command には、同時に 1 つの要求を処理できるインスタンス数とコマンドが終了されるまでにスローできるエラー数を制限するためのパラメータも用意されています。

複数のインスタンスを対象にする

targets パラメータでは、次の構文を使用します。

Copy
aws ssm send-command --document-name name --targets "Key=tag:tag name,Values=tag value" [...]

注記

このセクションのコマンド例で [...] は省略部分を示します。

複数の異なる環境のインスタンスに対して Key として Environment を使用し、Values として DevelopmentTestPre-productionProduction を使用してタグを付けた場合、次の targets パラメータを使用した構文で個別の環境のすべてのインスタンスに対してコマンドを送信できます。

Copy
aws ssm send-command --document-name name --targets "Key=tag:Environment,Values=Development" [...]

同時実行制御を使用する

同時にコマンドを実行するサーバー数を制御するには、max-concurrency パラメータを使用できます。インスタンスの絶対数 (10 など) またはターゲットセットのパーセント数 (10% など) を指定できます。キューシステムにより、コマンドは 1 つのインスタンスに送信され、この最初の呼び出しが完了するのを待ってから、さらに 2 つのインスタンスにコマンドが送信されます。max-concurrency の値に達するまで、コマンドの送信先のインスタンス数は指数関数的に増えていきます。max-concurrency のデフォルト値は 50 です。次の例は、max-concurrency パラメータの値を指定する方法を示しています。

Copy
aws ssm send-command --document-name name --max-concurrency 10 --targets "Key=tag:Environment,Values=Development" [...]
Copy
aws ssm send-command --document-name name --max-concurrency 10% --targets Key=tag:Department,Values=Finance,Marketing" "Key=tag:ServerRole,Values=WebServer,Database" [...]

エラー制御を使用する

コマンドの実行を数百または数千のインスタンスに制限するには、max-errors パラメータを使用してエラー制限を設定することもできます。このパラメータが指定するエラー数に達すると、システムからは他のインスタンスにコマンドが送信されなくなります。エラーの絶対数 (10 など) またはターゲットセットのパーセント数 (10% など) を指定できます。値として 0 を指定した場合、最初のエラー結果が返されると、システムから他のインスタンスにコマンドが送信されなくなります。コマンドの送信先のインスタンス数が 50 で max-errors を 10% に設定した場合、5 番目のエラーが発生すると、システムから他のインスタンスにコマンドが送信されなくなります。

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

Copy
aws ssm send-command --document-name name --max-errors 10 --targets "Key=tag:Database,Values=Development" [...]
Copy
--document-name name --max-errors 10% --targets "Key=tag:Environment,Values=Development" [...]
Copy
aws ssm send-command --document-name name --max-concurrency 1 --max-errors 1 --targets "Key=tag:Environment,Values=Production" [...]