У меня есть следующий запрос JMESPath
query="Reservations[].Instances[].{ \
InstanceId: InstanceId, \
RootDeviceVolumeId: BlockDeviceMappings[?DeviceName==\`/dev/sda1\`] \
| [].Ebs.VolumeId | [0], \
RootDeviceName: RootDeviceName \
}"
aws ec2 describe-instances --query $query
что дает такой результат
+------------+------------------+----------------------+
| InstanceId | RootDeviceName | RootDeviceVolumeId |
+------------+------------------+----------------------+
| i-12345678| /dev/sda1 | vol-abcdef12 |
| i-98765432| /dev/sda1 | vol-ef123456 |
| i-23456789| /dev/sda1 | vol-fedcba09 |
| i-aabbccdd| /dev/xvda | None |
+------------+------------------+----------------------+
Я хотел бы найти способ ссылаться на RootDeviceName
из выражения BlockDeviceMappings
фильтра, а не жестко кодировать /dev/sda1
имя устройства, например, иногда /dev/xvda
. Однако я не могу найти способ сослаться на родительский элемент в выражении фильтра.
Другой вариант - отобразить RootDeviceName
и InstanceId
на проекцию всех устройств, а затем передать это в выражение фильтра, но синтаксис, похоже, также не поддерживает включение родительских элементов в проекции.
Я что-то упустил или это просто ограничение синтаксиса JMESPath?