簡體   English   中英

如何在“Systems Manager”運行命令中找到所有不成功的實例?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM