我想获取附加到实例的卷 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-id
Linux 发行版上预装的 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
}
]
}