2015-09-28 9 views
0
import boto.ec2 
import time 
import sys 
conn = boto.ec2.connect_to_region("ap-southeast-1") 

reservations=conn.get_all_instances(sys.argv[1]) 
instances = [i for r in reservations for i in r.instances] 
for i in instances: 
    print(i.__dict__) 

приведенных выше кода может принести детали, например я предоставить в качестве аргумента, мне нужно, чтобы запустить новый экземпляр из ami этого экземпляра, как я могу хранить детали в переменной, а затем использовать ее для запуска нового экземпляра в том же VPC?Как хранить детали экземпляра Amazon EC2 в varibles, а затем использовать переменные для запуска более

+0

простой хранить его в объекте JSON и повторно использовать его по желанию. –

+0

Вы могли бы помочь с фактическим кодом, чтобы сохранить его в json .., что будет действительно полезно для меня –

ответ

0

Так что вам нужно пройти через атрибуты instance (заменить i с instance имеет смысл)

>>> instance.image_id 
u'ami-XXXXXXX' 

>>> instance.vpc_id 
u'vpc-XXXXXXXX' 

>>> dir(instance) 
['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_in_monitoring_element', '_placement', '_previous_state', '_state', '_update', 'add_tag', 'add_tags', 'ami_launch_index', 'architecture', 'block_device_mapping', 'client_token', 'confirm_product', 'connection', 'create_image', 'dns_name', 'ebs_optimized', 'endElement', 'eventsSet', 'get_attribute', 'get_console_output', 'group_name', 'groups', 'hypervisor', 'id', 'image_id', 'instance_profile', 'instance_type', 'interfaces', 'ip_address', 'item', 'kernel', 'key_name', 'launch_time', 'modify_attribute', 'monitor', 'monitored', 'monitoring', 'monitoring_state', 'persistent', 'placement', 'placement_group', 'placement_tenancy', 'platform', 'previous_state', 'previous_state_code', 'private_dns_name', 'private_ip_address', 'product_codes', 'public_dns_name', 'ramdisk', 'reason', 'reboot', 'region', 'remove_tag', 'remove_tags', 'requester_id', 'reset_attribute', 'root_device_name', 'root_device_type', 'sourceDestCheck', 'spot_instance_request_id', 'start', 'startElement', 'state', 'state_code', 'state_reason', 'stop', 'subnet_id', 'tags', 'terminate', 'unmonitor', 'update', 'use_ip', 'virtualization_type', 'vpc_id'] 

Если вам необходимо запустить новый экземпляр, пожалуйста, пройти через

lounching-instances

part of run_instances

0

Возьмите приведенный ниже код как refe rence, используйте instance.image_id для извлечения идентификатора изображения, а затем запустите новые экземпляры, используя метод run_instances.

from boto.regioninfo import * 
from boto.ec2.connection import EC2Connection 

instances = ['enter instance id here'] 
key_name = "keyname" 
security_group = ['security group ids in array'] 
instance_type = "c3.xlarge" 
subnet_name = "subnet-id" 

# AWS connect info 
aws_access_key_id='########## AWS Access Key ############' 
aws_secret_access_key='########### AWS Secret Key ############' 
region_name='ap-southeast-1' 
region_ec2_endpoint='ec2.ap-southeast-1.amazonaws.com' 
# Connect EC2 
aws_region = RegionInfo(name=region_name, endpoint=region_endpoint) 
conn = EC2Connection(aws_access_key_id,aws_secret_access_key,region=aws_region) 

reservations = conn.get_all_instances(instance_ids=instances) 
instances = [i for r in reservations for i in r.instances] 
for i in instances: 
    image_id = i.image_id 
    reserve = conn.run_instances(image_id=image_id,key_name=key_name,subnet_id=subnet_name ,instance_type=instance_type,security_group_ids =security_group) 
    print "new system id is " + reserve.instances[0].id