如何通过AWS CLI将SSM命令调用结果输出为单表格式
如何用AWS CLI获取SSM命令执行结果的规范单表格式?
我正尝试获取包含实例ID(InstanceId)、状态(Status)和输出(Output)的单表结果,当前使用的AWS CLI命令如下:
aws ssm list-command-invocations --command-id "<commandid>" --details --query "CommandInvocations[].{Instancename:InstanceId,status:CommandPlugins[].Status,Output:CommandPlugins[].Output}" --output table
目前得到的结果是嵌套表格形式(如下所示),期望得到包含上述三个字段的规范单表格式:
------------------------------------------------------------------------------- | ListCommandInvocations | +-----------------------------------------------------------------------------+ | Instancename | +-----------------------------------------------------------------------------+ | i-0a81b895adb29b4ce | +-----------------------------------------------------------------------------+ || Output || |+---------------------------------------------------------------------------+| || 18:11:28 up 26 days, 22:57, 0 users, load average: 0.01, 0.11, 0.08 || |+---------------------------------------------------------------------------+| || status || |+---------------------------------------------------------------------------+| || Success || |+---------------------------------------------------------------------------+| | ListCommandInvocations | +-----------------------------------------------------------------------------+ | Instancename | +-----------------------------------------------------------------------------+ | i-084f6d183997baa09 | +-----------------------------------------------------------------------------+ || Output || |+---------------------------------------------------------------------------+| || 18:11:28 up 33 days, 23:57, 0 users, load average: 0.75, 0.38, 0.16 || |+---------------------------------------------------------------------------+| || status || |+---------------------------------------------------------------------------+| || Success || |+---------------------------------------------------------------------------+| | ListCommandInvocations | +-----------------------------------------------------------------------------+ | Instancename | +-----------------------------------------------------------------------------+ | i-0d8dd2712b340630b | +-----------------------------------------------------------------------------+ || Output || |+---------------------------------------------------------------------------+| || 18:11:28 up 26 days, 20:22, 0 users, load average: 0.24, 0.29, 0.27 || |+---------------------------------------------------------------------------+| || status || |+---------------------------------------------------------------------------+| || Success ||
解决方案
问题出在CommandPlugins[]返回的是数组结构,直接引用会让表格产生嵌套。只需用索引[0]提取数组中的第一个元素(通常单条SSM命令对应一个插件结果),修改后的命令如下:
aws ssm list-command-invocations --command-id "<commandid>" --details --query "CommandInvocations[].{Instancename:InstanceId,status:CommandPlugins[0].Status,Output:CommandPlugins[0].Output}" --output table
说明
CommandPlugins是数组类型,当使用CommandPlugins[].Status时会返回包含单个值的数组,导致AWS CLI输出嵌套表格。改用CommandPlugins[0].Status和CommandPlugins[0].Output可以直接获取单个字段值,最终生成包含实例ID、状态、输出三列的规范平级表格。
内容的提问来源于stack exchange,提问作者WebDeveloper2017
相关产品推荐
相关产品推荐

