Надеюсь, вы можете помочь с этим вопросом. Надеюсь, ответ позволит мне строить более качественные запросы в дальнейшем. Я пытаюсь выполнить фильтрацию по корневому устройству конкретного экземпляра и получить идентификатор тома корневых устройств. Не могли бы вы объяснить, как я мог присоединиться к двум таким запросам. Поиск DeviceName / dev / sda1 и получение соответствующего VolumeId.
aws ec2 describe-instances --instance-id i-02bc19e18ef09cdbe --query 'Reservations[].Instances[].BlockDeviceMappings[]'
[
{
"Ebs": {
"AttachTime": "2017-04-20T13:32:04.000Z",
"VolumeId": "vol-0118bd9c0a08164f2",
"DeleteOnTermination": false,
"Status": "attached"
},
"DeviceName": "/dev/sda1"
}
]
Этот вопрос немного старый, но вот возможное решение для вас. Сделав одно предположение, а именно, что корневое устройство /dev/sda1
. Я думаю, что это довольно хорошее предположение для AWS. Если вы не укажете идентификатор экземпляра, будут возвращены все экземпляры. Затем я ищу DeviceName, равное / dev / sda1. После поискового запроса создается список с DeviceName и VolumeId.
aws ec2 describe-instances --query "Reservations[].Instances[].BlockDeviceMappings[?DeviceName == '/dev/sda1'].{DeviceName: DeviceName, VolumeID: Ebs.VolumeId}
Я знаю, что уже поздно, но все же, если кому-то это нужно, вот команда aws cli, которую можно использовать для получения имени корневого тома, прикрепленного к экземпляру.
aws ec2 describe-instances --instance-ids <instance-id> --region <region-name> --query "Reservations[*].Instances[*].RootDeviceName" --output text
Используя вывод вышеприведенной команды в качестве входных данных для указанной ниже команды, мы можем получить идентификатор тома.
aws ec2 describe-volumes --region <region name> --filters Name=attachment.instance-id,Values=<instance-id> Name=attachment.device,Values=<output from above command> --query 'Volumes[*].VolumeId' --output text