我有以下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語法的限制嗎?
感謝澄清。有沒有關於這部分規範的變化的建議? – 2015-02-23 20:41:34
是的,剛剛添加:https://github.com/jmespath/jmespath.site/pull/6 – jamesls 2015-02-25 09:52:29