Если я выполню этот очень простой запрос по моим данным json из команды aws, я получу правильный результат относительно количества экземпляров сервера aws, имеющихся у меня в учетной записи:
aws ec2 describe-instances | jq -r '.Reservations[].Instances[].InstanceId'
Создает список из 47идентификаторы экземпляров, которые соответствуют числу экземпляров сервера, которые есть в учетной записи.Например:
i-01adbf1408ef1a333
i-0f92d078ce975c138
i-0e4e117c44b17b417
and on up to 47 instances
Этот следующий запрос все еще дает правильное количество результатов:
aws ec2 describe-instances | jq -r '.Reservations[].Instances[] | [( .InstanceId ) ]'
Однако, если я добавлю запрос, включающий теги имен серверов, я получу драматическименьшее количество зарегистрированных экземпляров сервера:
aws ec2 describe-instances | jq -r '.Reservations[].Instances[] | [( (.Tags[]|select(.Key=="Name")|.Value), .InstanceId ) ]'
Это вывод этой команды:
"i-08d3c05eed1316c9d"
"USAMZLAB10003","i-79eebb29"
"EOMLABAMZ1306","i-dbc98af4"
"USAMZLAB10002","i-d1dc1d83"
"i-0366c9bf18d27eb96"
"i-04d061334bc2f2d6b"
"USAMZLAB10007","i-f7a680a7"
"i-090e84eff4fece2b3"
"EOMLABAMZ1303","i-7cc98a53"
"EOMLABCSE713","i-08233926"
"i-0705eb3039cd56e04"
jq: error (at <stdin>:5013): Cannot iterate over null (null)
По какой-то причине этот запрос сообщает, что существует только 11 экземпляров сервера aws (когдадолжно быть 47).Он сообщает, что существуют серверы с тегами имен и без них.Но он не сообщает правильное количество серверов.
Он также выдает ошибку jq «Невозможно выполнить итерацию по нулю».
Я поместил исходный JSON в эту вставку:
Оригинал JSON
Как я могу сделать ошибку более многословной, чтобы узнать, что происходит?
И почему добавление тега name к запросу значительно сокращает количество результатов?