aws ssm list-commands でコマンドの実行状況を確認する

aws ssm send-command でRun Commandを実行したあと、aws ssm list-commands で実行状況を確認できる。

$ aws ssm list-commands

出力が多い場合は --command-id で特定のコマンドに絞り込む。

$ aws ssm list-commands --command-id [コマンドID]

send-command 実行時に表示される CommandId を使う。

–query で必要なフィールドのみ取得する

--query オプションでフィールドを絞り込むと、実行状況をシンプルに確認できる。

$ aws ssm list-commands \
  --command-id [コマンドID] \
  --query "Commands[*].[Status, TargetCount, CompletedCount, ErrorCount]" \
  --output table

実行結果の例:

--------------------------------
|         ListCommands         |
+----------+------+------+-----+
|  Success |  135 |  135 |  0  |
+----------+------+------+-----+

各フィールドの意味:

フィールド説明
Statusコマンド全体のステータス(Success / Failed / InProgress など)
TargetCount対象インスタンス数
CompletedCount完了済みインスタンス数
ErrorCountエラーが発生したインスタンス数

list-command-invocations でインスタンスごとの詳細を確認する

list-commands はコマンド全体のステータスを返すが、インスタンスごとの実行詳細を確認するには list-command-invocations を使う。

$ aws ssm list-command-invocations \
  --command-id [コマンドID] \
  --details \
  --query "CommandInvocations[*].[InstanceId, Status, CommandPlugins[0].Output]" \
  --output table

--details を付けることでコマンドの標準出力(Output)も取得できる。

エラーが発生したインスタンスのみ絞り込む場合は --filters を使う。

$ aws ssm list-command-invocations \
  --command-id [コマンドID] \
  --filters "key=Status,value=Failed" \
  --details