Python Boto3获取EC2实例';s体积

Python Boto3获取EC2实例';s体积,python,amazon-web-services,aws-sdk,boto3,Python,Amazon Web Services,Aws Sdk,Boto3,我正在尝试使用BOTO3获取aws实例的卷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.In

我正在尝试使用BOTO3获取aws实例的卷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.

这只是一个对象的列表,所以

for v in volumes:
    print(v.id)
如果要获取id列表,请执行以下操作:

l = [v.id for v in volumes]

e、 g.只需在卷上迭代即可获得卷ID和大小

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

迭代器由
ec2.Instance.volumesCollection返回

您可以使用如下代码提取卷ID

volume_id_list=[]
for item in instance.volumes.all():
  volume_id_list.append(item.id)
然后,卷id列表[0]包含第一个磁盘,卷id列表[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')

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

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

我在尝试迭代volumesnevermind时出错。。我添加了
.all()
调用,得到了您引用的可迭代对象