Как я могу использовать JQ для анализа этой строки? - PullRequest
0 голосов
/ 27 августа 2018

Строка CommandID не работает так, как я ожидаю, когда я пытаюсь извлечь с помощью jq:

aws ssm send-command --document-name "AWS-RunPatchBaseline" --instance-ids i-xxxxxxxxxxxx --max-errors "1" --parameters '{"Operation":["Install"]}' --timeout-seconds 600 --output-s3-bucket-name "ssm" --region "us-east-1" | jq

Не выбранный выход:

    {
  "Command": {
    "CommandId": "7312718d-2327-43g4-bffc-093a0901a13c",
    "DocumentName": "AWS-RunPatchBaseline",
    "Comment": "",
    "ExpiresAfter": 1535382731.286,
    "Parameters": {
      "Operation": [
        "Install"
      ]
    },
    "InstanceIds": [
      "i-xxxxxxxxx"
    ],
    "Targets": [],
    "RequestedDateTime": 1535378531.286,
    "Status": "Pending",
     "StatusDetails": "Pending",
    "OutputS3BucketName": "ssm",
    "OutputS3KeyPrefix": "",
    "MaxConcurrency": "50",
    "MaxErrors": "1",
     "TargetCount": 1,
    "CompletedCount": 0,
    "ErrorCount": 0,
    "ServiceRole": "",
    "NotificationConfig": {
      "NotificationArn": "",
      "NotificationEvents": [],
      "NotificationType": ""
    }
  }
}

Я бы подумал, что смогу использовать эту команду для получения строки CommandID:

aws ssm send-command --document-name "AWS-RunPatchBaseline" --instance-ids i-xxxxxxxxxxxxxx --max-errors "1" --parameters '{"Operation":["Install"]}' --timeout-seconds 600 --output-s3-bucket-name "ssm" --region "us-east-1" | jq -r '.Command[].CommandID'

Но это дает мне эту ошибку:

 jq: error (at <stdin>:33): Cannot index string with string "CommandID"

Любые идеи о том, как извлечь это?

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

Кажется, что в вашей команде JSON нет объекта массива.

Если вам требуется значение CommandId, измените ваш jq на 'jq .Command.CommandId'

0 голосов
/ 27 августа 2018

Значение клавиши "Command" не является списком; это просто другой объект, ключ которого CommandID. Вы просто хотите

... | jq -r '.Command.CommandID'

Фильтр .Command[] возвращает последовательность значений объекта, поэтому вы получаете ошибку при попытке оценить что-то вроде "7312718d-2327-43g4-bffc-093a0901a13c".Command, а не {"Command: ...}.Command.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...