メニュー
Amazon EC2 Systems Manager
ユーザーガイド

フリートにコマンドを送信する

targets パラメーター (Amazon EC2 コンソールの [Select Targets by Specifying a Tag] オプション) を使用して、数 10、数百、または数千のインスタンスにコマンドを送信できます。targets パラメータは、インスタンスに指定した Amazon EC2 タグに基づいて Key,Value の組み合わせを受け取ります。コマンドを実行すると、システムは、指定したタグと一致するすべてのインスタンスでコマンドを見つけ、実行しようとします。Amazon EC2 タグの詳細については、Amazon EC2 ユーザーガイドの「Amazon EC2リソースにタグを付ける」を参照してください (内容は Windows および Linux インスタンスに適用されます)。

注記

以下のセクションで説明しているように、targets パラメーターを使用して、特定のインスタンス ID のリストを対象にできます。

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

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

いずれかの Amazon EC2 タグまたはインスタンス ID を指定してコマンドを実行し、インスタンスを対象にできます。targets パラメーターでは、AWS CLI で次の構文を使用します。

例 1: タグを対象にする

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

注記

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

例 2: インスタンス ID を対象にする

Copy
aws ssm send-command --document-name name --targets Key=instanceids,Values=ID1,ID2,ID3 [...]

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

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

Values リストに追加して、他の環境の追加インスタンスを対象にすることができます。カンマを使用して項目を区切ります。

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

例: 複数の Key 条件を使用してターゲットを絞り込む

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

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

例: Key および Value 条件を使用する

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

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

例: 複数の Values 条件を使用してタグ付けされたインスタンスを対象にする

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

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

注記

各キーには、最大 5 つのキーおよび 5 つの値を指定できます。

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

例 1: Value タグのスペース。

Copy
aws ssm send-command --document-name name --targets Key=tag:OS,Values="Windows Server 2016 Nano" [...]

例 2: tag キーおよび Value のスペース。

Copy
aws ssm send-command --document-name name --targets Key="tag:Operating System",Values="Windows Server 2016 Nano" [...]

例 3: Values のリストの 1 つの項目のスペース。

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

同時実行制御を使用する

同時にコマンドを実行するサーバー数を制御するには、max-concurrency パラメーターを使用できます (Amazon EC2 コンソールの [Execute on] フィールド)。インスタンスの絶対数 (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 パラメーターを使用してエラー制限を設定することもできます (Amazon EC2 コンソールの [Stop after __ errors] フィールド)。このパラメータが指定するエラー数に達すると、システムからは他のインスタンスにコマンドが送信されなくなります。エラーの絶対数 (10 など) またはターゲットセットのパーセント数 (10% など) を指定できます。たとえば、3 を指定した場合、4 番目のエラーが受信されると、システムからコマンドが送信されなくなります。値として 0 を指定した場合、最初のエラー結果が返されると、システムから他のインスタンスにコマンドが送信されなくなります。コマンドの送信先のインスタンス数が 50 で max-errors を 10% に設定した場合、6 番目のエラーが受信されると、システムから他のインスタンスにコマンドが送信されなくなります。

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 [...]