2015-11-30 2 views
1

Я хочу перечислить все тома, прикрепленные к моему ec2.Список томов EC2 в Boto

conn = EC2Connection() 
attribute = get_instance_metadata() 
region=attribute['local-hostname'].split('.')[1] 
inst_id = attribute['instance-id'] 
aws = boto.ec2.connect_to_region(region) 
volume=attribute['local-hostname'] 
volumes = str(aws.get_all_volumes(filters={'attachment.instance-id': inst_id})) 

С моим кодом я могу перечислить объем, но результат так:

[т-35b0b5fa, Объем: т-6cbbbea3]

мне нужно что-то вроде:

том -35b0b5fa

т-6cbbbea3

Я не знаю, как я могу сделать, и мои исследования не помогают мне.

Кто-нибудь может мне помочь?

ответ

2

get_all_volumes call in boto возвращает список Volume объектов. Если все, что вам нужно, это идентификатор тома, вы можете получить, что с помощью атрибута Volume объекта id:

import boto.ec2 
ec2 = boto.ec2.connect_to_region(region_name) 
volumes = ec2.get_all_volumes() 
volume_ids = [v.id for v in volumes] 

Переменная volume_ids теперь будет список строк, где каждая строка является идентификатором одного из томов.

1

Я думаю, что здесь требование просто итерацию по списку с v.id: Просто добавьте это в ваш код:

for v in volumes: 
    print v.id 
+0

Чтобы сделать его более короче, вы можете просто сделать [v.id для V в объемах] – Prash

3

Если вы используете библиотеку Boto3, то здесь команду перечислить все подключенные тома

import boto3 
ec2 = boto3.resource('ec2', region_name='us-west-2') 
volumes = ec2.volumes.all() # If you want to list out all volumes 
volumes = ec2.volumes.filter(Filters=[{'Name': 'status', 'Values': ['in-use']}]) # if you want to list out only attached volumes 
[volume for volume in volumes] 
Смежные вопросы