[英]AWS Systems Manager Command: Works when executing manually, does not work from run command
[英]How to find all the instances that were not successful in a "Systems Manager" run command?
我運行了AWS-RunPatchBaseline
運行命令,我的實例很少成功,其中很少超時。 我想使用aws cli list-command-inovcations
命令過濾超時的實例。
當我運行以下 CLI 命令時:
aws ssm list-command-invocations --command-id 7894b7658-a156-4e5g-97t2-2a9ab5498e1d
它顯示附在此處的輸出
接下來,從上面的 output 中,我想過濾所有具有"Status": "Timedout", "StatusDetails": "DeliveryTimedOut"
(或者,實際上,除"Status": "Success"
之外的所有實例)的實例
我試過了:
aws ssm list-command-invocations --command-id 7894b7658-a156-4e5g-97t2-2a9ab5498e1d --output text --query '@[?(CommandInvocations.Status != 'Success')]'
它正在返回None
。
我也試過
aws ssm list-command-invocations --command-id 7894b7658-a156-4e5g-97t2-2a9ab5498e1d --output text --query '@[?(@.Status != 'Success')]'
這也返回None
。
與
aws ssm list-command-invocations --command-id 7894b7658-a156-4e5g-97t2-2a9ab5498e1d --output text --query 'CommandInvocations[?(@.Status != 'Success')]'
它沒有被過濾,返回完整的 output。
由於您沒有提供 output 的示例,可以出於測試目的復制/粘貼,因此此示例基於AWS 文檔中的 output,其中我更改了 ID ef7fdfd8-9b57-4151-a15c-db9a12345678
命令的Status
,我也從多余的數據中清除了一點,所以:
{
"CommandInvocations": [
{
"CommandId": "ef7fdfd8-9b57-4151-a15c-db9a12345678",
"InstanceId": "i-02573cafcfEXAMPLE",
"InstanceName": "",
"DocumentName": "AWS-UpdateSSMAgent",
"DocumentVersion": "",
"RequestedDateTime": 1582136283.089,
"Status": "TimedOut",
"StatusDetails": "DeliveryTimeOut"
},
{
"CommandId": "ef7fdfd8-9b57-4151-a15c-db9a12345678",
"InstanceId": "i-0471e04240EXAMPLE",
"InstanceName": "",
"DocumentName": "AWS-UpdateSSMAgent",
"DocumentVersion": "",
"RequestedDateTime": 1582136283.02,
"Status": "Success",
"StatusDetails": "Success"
}
]
}
鑒於此 JSON,要應用的過濾器與您在教程“過濾器投影”一章中可以找到的過濾器非常相似。
你只需要 select 數組所在的屬性,在你的例子中, CommandInvocations
,並應用你的條件, Status != `Success`
,在括號內[? ]
[? ]
。
因此,通過查詢:
CommandInvocations[?Status != `Success`]
在上面的 JSON 上,我們最終得到了預期的結果:
[
{
"CommandId": "ef7fdfd8-9b57-4151-a15c-db9a12345678",
"InstanceId": "i-02573cafcfEXAMPLE",
"InstanceName": "",
"DocumentName": "AWS-UpdateSSMAgent",
"DocumentVersion": "",
"RequestedDateTime": 1582136283.089,
"Status": "TimedOut",
"StatusDetails": "DeliveryTimeOut"
}
]
因此,您的 AWS 命令應該是:
aws ssm list-command-invocations \
--command-id 7894b7658-a156-4e5g-97t2-2a9ab5498e1d \
--output text \
--query 'CommandInvocations[?Status != `Success`]'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.