Boto3获得EC2实例的音量

时间:2016-05-19 13:05:02

标签: python amazon-web-services aws-sdk boto3

我正在尝试使用boto 3获取aws实例的volume-id列表,我正在获得一些收集管理器,但我不知道如何获取数据。

import boto3
ec2 = boto3.resource('ec2', region_name='us-west-2')
instance = ec2.Instance('i-xxxxxx')
volumes = instance.volumes.all()
print volumes

我得到的答案是:

ec2.Instance.volumesCollection(ec2.Instance(id='i-xxxxxx'), ec2.Volume)

我如何使用" ec2.Volume"获取卷ID

谢谢, CFIR。

5 个答案:

答案 0 :(得分:4)

它只是一个可迭代的对象所以

l = [v.id for v in volumes]

如果你想获得一个id列表:

{{1}}

答案 1 :(得分:2)

ec2.Instance.volumesCollection

返回迭代器

您可以使用类似

的代码提取音量ID
volume_id_list=[]
for item in instance.volumes.all():
  volume_id_list.append(item.id)

然后volume_id_list [0]包含第一个磁盘,volume_id_list [1]包含第二个磁盘

请参阅https://boto3.readthedocs.io/en/latest/reference/services/ec2.html#EC2.Instance.volumes

答案 2 :(得分:1)

e.g。您可以通过迭代来获取卷ID和大小。

for volume in volumes:
    print (volume.id, volume.size)

答案 3 :(得分:1)

使用EC2客户端:

ec2_client = boto3.client('ec2',
                    aws_access_key_id='XYZ',
                    aws_secret_access_key='XYZ',
                    region_name='us-east-1')
volumes = ec2_client.describe_instance_attribute(InstanceId='i-0b30bea4e05579def',
Attribute='blockDeviceMapping')

答案 4 :(得分:0)

您也可以使用cli。示例我正在尝试获取附加的根卷列表

aws ec2 describe-volumes --filters "Name=attachment.device,Values=*sda1" --query "Volumes[*].[VolumeId]"  --output text --profile=my_genius_aws_profile