【发布时间】:2021-12-16 20:14:56
【问题描述】:
我需要在 boto3 中找到我的 EC2 实例的根卷的卷 ID
我尝试通过describe_volumes 获取卷,但没有根卷的标识符
【问题讨论】:
标签: amazon-ec2 boto3
我需要在 boto3 中找到我的 EC2 实例的根卷的卷 ID
我尝试通过describe_volumes 获取卷,但没有根卷的标识符
【问题讨论】:
标签: amazon-ec2 boto3
您可以使用aws ec2 describe-instances 查看附加的磁盘。这些卷将出现在BlockDeviceMappings 部分:
"BlockDeviceMappings": [
{
"DeviceName": "/dev/xvda",
"Ebs": {
"AttachTime": "2016-01-24T06:46:06+00:00",
"DeleteOnTermination": true,
"Status": "attached",
"VolumeId": "vol-686feca2"
}
}
],
【讨论】:
如果卷的DeviceName 与实例的root_device_name 匹配,则该卷就是根卷。
import boto3
session=boto3.session.Session()
ec2=session.resource('ec2')
instance_iterator = ec2.instances.all()
for instance in instance_iterator:
print(instance.id)
for device in instance.block_device_mappings:
if device['DeviceName']==instance.root_device_name:
print("The root volume is ", device['Ebs']['VolumeId'])
else:
print("The additional ebs volume is", device['Ebs']['VolumeId'])
【讨论】:
根卷没有标识符
最可能的原因是该卷未附加到任何实例。
默认调用describe-volumes 会返回所有卷。如果一个卷附加到一个实例,它会反映在它的输出中。如果未附加该卷,则实例上没有关于其 Attachments 和 Device 名称的信息。
要仅列出附加的卷,您可以使用filter:
aws ec2 describe-volumes \
--filters Name=attachment.status,Values=attached
【讨论】: