Опция запроса CLI AWS, когда в возвращаемом атрибуте есть точка / точка - PullRequest
0 голосов
/ 08 мая 2019

Вот команда, которую я выполняю

aws ssm describe-automation-executions \
    --filters "Key=ExecutionId,Values=b4a76700-50e0-4b3d-a790-d80a54ee91de" \
    --query "AutomationExecutionMetadataList[0].Outputs"

И вывод

{
    "createImage.ImageId": [
        "ami-0db79d4244a6501bc"
    ]
}

Это то, что я ожидаю. Однако я хочу дополнительно уточнить свой запрос, чтобы выбрать createImage.ImageId, и поскольку этот атрибут содержит точку, следующий запрос не будет работать

--query "AutomationExecutionMetadataList[0].Outputs.createImage.ImageId"

Возвращает null в качестве результата вывода.

Я пробовал несколько других вещей, но, кажется, не могу выбрать атрибут createImage.ImageId через AWS CLI Query. Можно ли сделать это через --query без использования дополнительных инструментов сценариев (jq и т. Д.)

1 Ответ

1 голос
/ 08 мая 2019
aws ssm describe-automation-executions \
        --filters "Key=ExecutionId,Values=b4a76700-50e0-4b3d-a790-d80a54ee91de" \
        --query 'AutomationExecutionMetadataList[0].Outputs."createImage.ImageId"'

После некоторых экспериментов вышеприведенная команда заработала.

Заметим, что я заметил, что формат запроса AWS CLI в этом формате задокументирован здесь http://jmespath.org/

Параметр --query принимает строки, соответствующие спецификации JMESPath

https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-output.html#cli-usage-output-filter

...