Назад | Перейти на главную страницу

AWS EC2 Describe Instances - Фильтрация по корневому устройству

Надеюсь, вы можете помочь с этим вопросом. Надеюсь, ответ позволит мне строить более качественные запросы в дальнейшем. Я пытаюсь выполнить фильтрацию по корневому устройству конкретного экземпляра и получить идентификатор тома корневых устройств. Не могли бы вы объяснить, как я мог присоединиться к двум таким запросам. Поиск 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