AWS EC2 描述实例 - 按根设备过滤

AWS EC2 描述实例 - 按根设备过滤

希望您能帮助我解决此问题。希望答案能让我构建更好的查询。我正在尝试按特定实例的根设备进行过滤并获取根设备卷 ID。您能解释一下我如何连接两个这样的查询吗?搜索 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"
    }
]

答案1

这个问题有点老了,但这里有一个可能的解决方案。做一个假设——即根设备是/dev/sda1。我认为这对 AWS 来说是一个相当好的假设。如果您不指定实例 ID,则将返回所有实例。然后我搜索 DeviceName 等于 /dev/sda1。搜索词后,将创建一个包含 DeviceName 和 VolumeId 的列表。

aws ec2 describe-instances --query "Reservations[].Instances[].BlockDeviceMappings[?DeviceName == '/dev/sda1'].{DeviceName: DeviceName, VolumeID: Ebs.VolumeId}

答案2

我知道已经晚了,但是如果有人需要它,这里是 aws cli 命令,可用于检索连接到实例的根卷设备名称。

aws ec2 describe-instances --instance-ids <instance-id> --region <region-name> --query "Reservations[*].Instances[*].RootDeviceName" --output text

使用上述命令的输出作为以下命令的输入,我们可以检索卷 ID。

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

相关内容