2016-05-19 2 views
1

Я пытаюсь получить список экземпляров aws экземпляра aws, используя boto 3, я получаю сортировку менеджера коллекции, но я не знаю, как получить данные внутри.Boto3 получить объем экземпляра EC2

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", чтобы получить идентификатор тома

Спасибо, Cfir.

ответ

2

Это просто итерацию объектов так

for v in volumes: 
    print(v.id) 

, если вы хотите, чтобы получить список ID:

l = [v.id for v in volumes] 
1

например вы можете получить идентификатор и размер тома просто, итерации по нему.

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

У меня ошибка при попытке перебора томов – Erik

+0

@Erik, какая ошибка? –

+0

nevermind .. я добавил вызов '.all()' и получил итеративный объект, который вы цитировали – Erik

2

Итератор возвращается ec2.Instance.volumesCollection

Вы можете извлечь идентификаторы тома с кодом, как этот

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

0

Использование клиента 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') 
Смежные вопросы