如何从 AWS CLI 获取附加到实例的卷 ID

如何从 AWS CLI 获取附加到实例的卷 ID

我想获取附加到实例的卷 ID,就像我们从元数据中获取实例 ID 一样

InstanceID=`curl http://169.254.169.254/latest/meta-data/instance-id

答案1

元数据中未提供卷 ID。虚拟设备位于block-device-mapping/

您将需要使用 AWS CLI(或脚本、程序等)来获取分配给实例的卷 ID。

使用 CLI:

aws ec2 describe-volumes

输出将包括卷所附加到的实例 ID。

一旦知道了实例 ID,您就可以仅过滤连接到该实例的卷:

aws ec2 describe-volumes --filters Name=attachment.instance-id,Values=i-555550604eaf99999

文档将包含更多细节和示例。

描述卷

答案2

就我而言,我需要检索我仅有 shell 访问权限的实例上的卷 ID。我需要将卷 ID 传达给设置虚拟机的客户。

在这种情况下,如果您没有 aws 配置文件,而只需要获取卷 ID,则可以使用ebsnvme-idLinux 发行版上预装的 aws 工具(https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nvme-ebs-volumes.html

例如:

$ sudo /sbin/ebsnvme-id /dev/nvme1n1
Volume ID: vol-c26087a73f2293647
sdb

答案3

答案已经给出,但我正在寻找我正在运行查询的当前实例附加卷。

instance Id因此您只需从 curl 响应中传递即可。

aws ec2 describe-volumes --filters Name=attachment.instance-id,Values=$(curl -s http://169.254.169.254/latest/meta-data/instance-id)

示例输出

{
    "Volumes": [
        {
            "AvailabilityZone": "us-west-2b", 
            "Attachments": [
                {
                    "AttachTime": "2018-03-01T07:47:43.000Z", 
                    "InstanceId": "i-abcdedf", 
                    "VolumeId": "vol-12345", 
                    "State": "attached", 
                    "DeleteOnTermination": true, 
                    "Device": "/dev/xvda"
                }
            ], 
            "Encrypted": false, 
            "VolumeType": "gp2", 
            "VolumeId": "vol-123456", 
            "State": "in-use", 
            "Iops": 450, 
            "SnapshotId": "snap-1234", 
            "CreateTime": "2018-03-01T07:47:43.261Z", 
            "Size": 150
        }
    ]
}

相关内容