本文整理汇总了Python中boto.ec2.blockdevicemapping.BlockDeviceType.ephemeral_name方法的典型用法代码示例。如果您正苦于以下问题:Python BlockDeviceType.ephemeral_name方法的具体用法?Python BlockDeviceType.ephemeral_name怎么用?Python BlockDeviceType.ephemeral_name使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类boto.ec2.blockdevicemapping.BlockDeviceType
的用法示例。
在下文中一共展示了BlockDeviceType.ephemeral_name方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: build_block_device_map
# 需要导入模块: from boto.ec2.blockdevicemapping import BlockDeviceType [as 别名]
# 或者: from boto.ec2.blockdevicemapping.BlockDeviceType import ephemeral_name [as 别名]
def build_block_device_map(ephemeral, number_ephemeral_disks=1, ebs_size=None, iops=None, number_ebs_volumes=1):
bdm = blockdevicemapping.BlockDeviceMapping()
if ephemeral:
# The ephemeral disk
xvdb = BlockDeviceType()
xvdb.ephemeral_name = 'ephemeral0'
bdm['/dev/xvdb'] = xvdb
if number_ephemeral_disks == 2:
xvdc = BlockDeviceType()
xvdc.ephemeral_name = 'ephemeral1'
bdm['/dev/xvdc'] = xvdc
if ebs_size:
for disks in range(0, number_ebs_volumes):
xvd_n = blockdevicemapping.EBSBlockDeviceType(delete_on_termination=True)
xvd_n.size = int(ebs_size) # size in Gigabytes
if iops:
xvd_n.iops = 500
xvd_n.volume_type = 'io1'
else:
xvd_n.volume_type = 'gp2'
last_char = chr(ord('f') + disks)
bdm['/dev/xvd' + last_char] = xvd_n
return bdm
示例2: spotrequest
# 需要导入模块: from boto.ec2.blockdevicemapping import BlockDeviceType [as 别名]
# 或者: from boto.ec2.blockdevicemapping.BlockDeviceType import ephemeral_name [as 别名]
def spotrequest(ec2, nodetype, count, testname, testdate, threads, userdata = None):
global selected_availability_zone
maxprice = "0.40"
if nodetype == 'client':
instancetype = 'c3.xlarge'
else:
# For data nodes
instancetype = 'c3.4xlarge'
# Allow an explicit selection if needed...
#selected_availability_zone = "us-east-1e"
if not selected_availability_zone:
selected_availability_zone = random.choice([
'us-east-1a',
#'us-east-1b',
'us-east-1d',
'us-east-1e',
])
availability_zone = selected_availability_zone
if userdata == None:
userdata = """#!/bin/bash
echo {0} > /etc/node_testname
echo {1} > /etc/node_testdate
echo {2} > /etc/node_threads
echo {3} > /etc/node_role
#echo 10.136.71.116 > /etc/node_headnode
echo 400 > /etc/node_swap # MB of swap created
echo 1 > /etc/node_mongo_uselocal # Use local mongos shard server on each client
""".format(testname, testdate, threads, nodetype)
# For some tests we may not need any nodes of this type
if count == 0:
return []
# Default AMI
ami = 'ami-XXXXXXXX' # Current versions
# Specify ephemeral block devices...
bdmap = BlockDeviceMapping()
sdb = BlockDeviceType()
sdb.ephemeral_name = 'ephemeral0'
bdmap['/dev/sdb'] = sdb
sdc = BlockDeviceType()
sdc.ephemeral_name = 'ephemeral1'
bdmap['/dev/sdc'] = sdc
#sdd = BlockDeviceType()
#sdd.ephemeral_name = 'ephemeral2'
#bdmap['/dev/sdd'] = sdd
#sde = BlockDeviceType()
#sde.ephemeral_name = 'ephemeral3'
#bdmap['/dev/sde'] = sde
return ec2.request_spot_instances(maxprice, ami, count=count, launch_group=testdate, availability_zone_group=testdate, security_groups=['epstatic'], user_data=userdata, instance_type=instancetype, block_device_map=bdmap)
示例3: create_block_device_mapping
# 需要导入模块: from boto.ec2.blockdevicemapping import BlockDeviceType [as 别名]
# 或者: from boto.ec2.blockdevicemapping.BlockDeviceType import ephemeral_name [as 别名]
def create_block_device_mapping(ami, device_map):
bdm = BlockDeviceMapping()
for device, device_info in device_map.items():
if ami.root_device_type == "instance-store" and \
not device_info.get("ephemeral_name"):
# EBS is not supported by S3-backed AMIs at request time
# EBS volumes can be attached when an instance is running
continue
bd = BlockDeviceType()
if device_info.get('size'):
bd.size = device_info['size']
if ami.root_device_name == device:
ami_size = ami.block_device_mapping[device].size
if ami.virtualization_type == "hvm":
# Overwrite root device size for HVM instances, since they
# cannot be resized online
bd.size = ami_size
elif device_info.get('size'):
# make sure that size is enough for this AMI
assert ami_size <= device_info['size'], \
"Instance root device size cannot be smaller than AMI " \
"root device"
if device_info.get("delete_on_termination") is not False:
bd.delete_on_termination = True
if device_info.get("ephemeral_name"):
bd.ephemeral_name = device_info["ephemeral_name"]
if device_info.get("volume_type"):
bd.volume_type = device_info["volume_type"]
if device_info["volume_type"] == "io1" \
and device_info.get("iops"):
bd.iops = device_info["iops"]
bdm[device] = bd
return bdm
示例4: test_create_launch_configuration_with_block_device_mappings
# 需要导入模块: from boto.ec2.blockdevicemapping import BlockDeviceType [as 别名]
# 或者: from boto.ec2.blockdevicemapping.BlockDeviceType import ephemeral_name [as 别名]
def test_create_launch_configuration_with_block_device_mappings():
block_device_mapping = BlockDeviceMapping()
ephemeral_drive = BlockDeviceType()
ephemeral_drive.ephemeral_name = 'ephemeral0'
block_device_mapping['/dev/xvdb'] = ephemeral_drive
snapshot_drive = BlockDeviceType()
snapshot_drive.snapshot_id = "snap-1234abcd"
snapshot_drive.volume_type = "standard"
block_device_mapping['/dev/xvdp'] = snapshot_drive
ebs_drive = BlockDeviceType()
ebs_drive.volume_type = "io1"
ebs_drive.size = 100
ebs_drive.iops = 1000
ebs_drive.delete_on_termination = False
block_device_mapping['/dev/xvdh'] = ebs_drive
conn = boto.connect_autoscale(use_block_device_types=True)
config = LaunchConfiguration(
name='tester',
image_id='ami-abcd1234',
instance_type='m1.small',
key_name='the_keys',
security_groups=["default", "default2"],
user_data="This is some user_data",
instance_monitoring=True,
instance_profile_name='arn:aws:iam::123456789012:instance-profile/testing',
spot_price=0.1,
block_device_mappings=[block_device_mapping]
)
conn.create_launch_configuration(config)
launch_config = conn.get_all_launch_configurations()[0]
launch_config.name.should.equal('tester')
launch_config.image_id.should.equal('ami-abcd1234')
launch_config.instance_type.should.equal('m1.small')
launch_config.key_name.should.equal('the_keys')
set(launch_config.security_groups).should.equal(set(['default', 'default2']))
launch_config.user_data.should.equal("This is some user_data")
launch_config.instance_monitoring.enabled.should.equal('true')
launch_config.instance_profile_name.should.equal('arn:aws:iam::123456789012:instance-profile/testing')
launch_config.spot_price.should.equal(0.1)
len(launch_config.block_device_mappings).should.equal(3)
returned_mapping = launch_config.block_device_mappings
set(returned_mapping.keys()).should.equal(set(['/dev/xvdb', '/dev/xvdp', '/dev/xvdh']))
returned_mapping['/dev/xvdh'].iops.should.equal(1000)
returned_mapping['/dev/xvdh'].size.should.equal(100)
returned_mapping['/dev/xvdh'].volume_type.should.equal("io1")
returned_mapping['/dev/xvdh'].delete_on_termination.should.be.false
returned_mapping['/dev/xvdp'].snapshot_id.should.equal("snap-1234abcd")
returned_mapping['/dev/xvdp'].volume_type.should.equal("standard")
returned_mapping['/dev/xvdb'].ephemeral_name.should.equal('ephemeral0')
示例5: _parse_block_device_mappings
# 需要导入模块: from boto.ec2.blockdevicemapping import BlockDeviceType [as 别名]
# 或者: from boto.ec2.blockdevicemapping.BlockDeviceType import ephemeral_name [as 别名]
def _parse_block_device_mappings(user_input):
"""
Parse block device mappings per AWS CLI tools syntax (modified to add IOPS)
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/block-device-mapping-concepts.html
Syntax:
/dev/xvd[a-z]=[snapshot-id|ephemeral]:[size in GB]:[Delete on Term]:[IOPS]
- Leave inapplicable fields blank
- Delete on Termination defaults to True
- IOPS limits are not validated
- EBS sizing is not validated
Mount an Ephemeral Drive:
/dev/xvdb1=ephemeral0
Mount multiple Ephemeral Drives:
/dev/xvdb1=ephemeral0,/dev/xvdb2=ephemeral1
Mount a Snapshot:
/dev/xvdp=snap-1234abcd
Mount a Snapshot to a 100GB drive:
/dev/xvdp=snap-1234abcd:100
Mount a Snapshot to a 100GB drive and do not delete on termination:
/dev/xvdp=snap-1234abcd:100:false
Mount a Fresh 100GB EBS device
/dev/xvdp=:100
Mount a Fresh 100GB EBS Device and do not delete on termination:
/dev/xvdp=:100:false
Mount a Fresh 100GB EBS Device with 1000 IOPS
/dev/xvdp=:100::1000
"""
block_device_map = BlockDeviceMapping()
mappings = user_input.split(",")
for mapping in mappings:
block_type = BlockDeviceType()
mount_point, drive_type, size, delete, iops = _parse_drive_mapping(mapping)
if 'ephemeral' in drive_type:
block_type.ephemeral_name = drive_type
elif 'snap' in drive_type:
block_type.snapshot_id = drive_type
block_type.volume_type = "standard"
else:
block_type.volume_type = "standard"
block_type.size = size
block_type.delete_on_termination = delete
if iops:
block_type.iops = iops
block_type.volume_type = "io1"
block_device_map[mount_point] = block_type
return block_device_map
示例6: create_mapping
# 需要导入模块: from boto.ec2.blockdevicemapping import BlockDeviceType [as 别名]
# 或者: from boto.ec2.blockdevicemapping.BlockDeviceType import ephemeral_name [as 别名]
def create_mapping(config):
if 'mapping' not in config:
return None
mapping = BlockDeviceMapping()
for ephemeral_name, device_path in config['mapping'].iteritems():
ephemeral = BlockDeviceType()
ephemeral.ephemeral_name = ephemeral_name
mapping[device_path] = ephemeral
return mapping
示例7: launch
# 需要导入模块: from boto.ec2.blockdevicemapping import BlockDeviceType [as 别名]
# 或者: from boto.ec2.blockdevicemapping.BlockDeviceType import ephemeral_name [as 别名]
def launch(name, ami='ami-3d4ff254', instance_type='t1.micro', key_name='amazon2',
zone='us-east-1d', security_group='quicklaunch-1', user='ubuntu', job=None):
'''Launch a single instance of the provided ami '''
conn = EC2Connection()
# Declare the block device mapping for ephemeral disks
mapping = BlockDeviceMapping()
eph0 = BlockDeviceType()
eph1 = BlockDeviceType()
eph0.ephemeral_name = 'ephemeral0'
eph1.ephemeral_name = 'ephemeral1'
mapping['/dev/sdb'] = eph0
mapping['/dev/sdc'] = eph1
# Now, ask for a reservation
reservation = conn.run_instances(ami, instance_type=instance_type,
key_name=key_name, placement=zone,
block_device_map=mapping, security_groups=[security_group])
# And assume that the instance we're talking about is the first in the list
# This is not always a good assumption, and will likely depend on the specifics
# of your launching situation. For launching an isolated instance while no
# other actions are taking place, this is sufficient.
instance = reservation.instances[0]
print('Waiting for instance to start...')
# Check up on its status every so often
status = instance.update()
while status == 'pending':
time.sleep(5)
status = instance.update()
if status == 'running':
print('New instance "' + instance.id + '" accessible at ' + instance.public_dns_name)
# Name the instance
conn.create_tags([instance.id], {'Name': name})
n = Node(name, instance.id, instance.image_id, instance.key_name, instance.placement,
instance.instance_type, instance.dns_name, instance.private_dns_name,
instance.ip_address, instance.private_ip_address, user, job)
pprint.pprint(n.to_dict())
addNode(n)
else:
print('Instance status: ' + status)
return
示例8: _create_device_map
# 需要导入模块: from boto.ec2.blockdevicemapping import BlockDeviceType [as 别名]
# 或者: from boto.ec2.blockdevicemapping.BlockDeviceType import ephemeral_name [as 别名]
def _create_device_map(ephemeral_disk_count):
"""Creates a block device out of the ephemeral disks on this instance."""
device_map = BlockDeviceMapping()
device_paths = _get_device_paths(ephemeral_disk_count)
for index, device_path in enumerate(device_paths):
device = BlockDeviceType()
device.ephemeral_name = "ephemeral{}".format(index)
device_map[device_path] = device
return device_map
示例9: block_mappings
# 需要导入模块: from boto.ec2.blockdevicemapping import BlockDeviceType [as 别名]
# 或者: from boto.ec2.blockdevicemapping.BlockDeviceType import ephemeral_name [as 别名]
def block_mappings(flavor):
mapping = BlockDeviceMapping()
if flavor == "hs1.8xlarge":
for i in range(0, 24):
eph = BlockDeviceType()
eph.ephemeral_name = "ephemeral%d" % i
device = "/dev/sd%c1" % chr(ord('b') + i)
mapping[device] = eph
elif flavor == "hi1.4xlarge":
for i in range(0, 2):
eph = BlockDeviceType()
eph.ephemeral_name = "ephemeral%d" % i
device = "/dev/sd%c1" % chr(ord('b') + i)
mapping[device] = eph
elif flavor == "m1.xlarge":
for i in range(0, 4):
eph = BlockDeviceType()
eph.ephemeral_name = "ephemeral%d" % i
device = "/dev/sd%c1" % chr(ord('b') + i)
mapping[device] = eph
return mapping
示例10: launch_instance
# 需要导入模块: from boto.ec2.blockdevicemapping import BlockDeviceType [as 别名]
# 或者: from boto.ec2.blockdevicemapping.BlockDeviceType import ephemeral_name [as 别名]
def launch_instance(self):
if not self.verify_settings():
return
block_map = BlockDeviceMapping()
root_device = self.config["ec2_root_device"]
block_map[root_device] = EBSBlockDeviceType()
if self.config["ec2_size"]:
block_map[root_device].size = self.config["ec2_size"]
block_map[root_device].delete_on_termination = True
for num, device_location in enumerate(self.config["ec2_ephemeral_devices"]):
device = BlockDeviceType()
device.ephemeral_name = "ephemeral%d" % num
block_map[device_location] = device
reservation = self.conn.run_instances(
self.config["ec2_ami_id"],
key_name=self.config["ec2_key_name"],
security_groups=self.config["ec2_security_groups"] or [self.config["ec2_security_group"]],
instance_type=self.config["ec2_instance_type"],
placement=self.config["ec2_zone"],
monitoring_enabled=self.config["ec2_monitoring_enabled"],
block_device_map=block_map,
user_data=self.user_data,
)
self.instance = reservation.instances[0]
secs = RUN_INSTANCE_TIMEOUT
rest_interval = 5
while secs and not self.instance.state == "running":
time.sleep(rest_interval)
secs = secs - rest_interval
try:
self.instance.update()
except boto.exception.EC2ResponseError:
pass
if secs <= 0:
errmsg = "run instance %s failed after %d seconds" % (self.instance.id, RUN_INSTANCE_TIMEOUT)
LOG.error(errmsg)
else:
if self.config["hostname"]:
self.assign_name_tag()
msg1 = "Started Instance: {0}\n".format(self.instance.id)
LOG.info(msg1)
print msg1
p = int(self.config["ssh_port"])
port = "-p {0} ".format(p) if p and not p == 22 else ""
## change user to 'root' for all non-Ubuntu systems
user = self.config["sudouser"] if self.config["sudouser"] and self.config["ssh_import"] else "ubuntu"
# XXX - TODO: replace public dns with fqdn, where appropriate
msg2 = "To access: ssh {0}{1}@{2}\n" "To terminate: shaker-terminate {3}".format(
port, user, self.instance.public_dns_name, self.instance.id
)
LOG.info(msg2)
print msg2
示例11: demandrequest
# 需要导入模块: from boto.ec2.blockdevicemapping import BlockDeviceType [as 别名]
# 或者: from boto.ec2.blockdevicemapping.BlockDeviceType import ephemeral_name [as 别名]
def demandrequest(ec2, nodetype, testname, testdate, threads, userdata = None):
global selected_availability_zone
if nodetype == 'client':
instancetype = 'c3.xlarge'
else:
instancetype = 'i2.xlarge'
# Allow an explicit selection if needed...
#selected_availability_zone = 'us-east-1e'
if not selected_availability_zone:
selected_availability_zone = random.choice([
'us-east-1a',
#'us-east-1b',
'us-east-1d',
'us-east-1e',
])
availability_zone = selected_availability_zone
if userdata == None:
userdata = """#!/bin/bash
echo {0} > /etc/node_testname
echo {1} > /etc/node_testdate
echo {2} > /etc/node_threads
echo {3} > /etc/node_role
echo 10.136.71.116 > /etc/node_headnode
echo 400 > /etc/node_swap # MB of swap created
echo 1 > /etc/node_mongo_uselocal # Use local mongos shard server on each client
""".format(testname, testdate, threads, nodetype)
# Default AMI
ami = 'ami-XXXXXXXX' # Current versions
# Specify ephemeral block devices...
bdmap = BlockDeviceMapping()
sdb = BlockDeviceType()
sdb.ephemeral_name = 'ephemeral0'
bdmap['/dev/sdb'] = sdb
#sdc = BlockDeviceType()
#sdc.ephemeral_name = 'ephemeral1'
#bdmap['/dev/sdc'] = sdc
#sdd = BlockDeviceType()
#sdd.ephemeral_name = 'ephemeral2'
#bdmap['/dev/sdd'] = sdd
#sde = BlockDeviceType()
#sde.ephemeral_name = 'ephemeral3'
#bdmap['/dev/sde'] = sde
return ec2.run_instances(ami, placement=availability_zone, security_groups=['epstatic'], user_data=userdata, instance_type=instancetype, block_device_map=bdmap)
示例12: _process_block_device_mappings
# 需要导入模块: from boto.ec2.blockdevicemapping import BlockDeviceType [as 别名]
# 或者: from boto.ec2.blockdevicemapping.BlockDeviceType import ephemeral_name [as 别名]
def _process_block_device_mappings(self, launch_config, zone=None):
"""
Processes block device mapping information
and returns a Boto BlockDeviceMapping object. If new volumes
are requested (source is None and destination is VOLUME), they will be
created and the relevant volume ids included in the mapping.
"""
bdm = BlockDeviceMapping()
# Assign letters from f onwards
# http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/device_naming.html
next_letter = iter(list(string.ascii_lowercase[6:]))
# assign ephemeral devices from 0 onwards
ephemeral_counter = 0
for device in launch_config.block_devices:
bd_type = BlockDeviceType()
if device.is_volume:
if device.is_root:
bdm['/dev/sda1'] = bd_type
else:
bdm['sd' + next(next_letter)] = bd_type
if isinstance(device.source, Snapshot):
bd_type.snapshot_id = device.source.id
elif isinstance(device.source, Volume):
bd_type.volume_id = device.source.id
elif isinstance(device.source, MachineImage):
# Not supported
pass
else:
# source is None, but destination is volume, therefore
# create a blank volume. If the Zone is None, this
# could fail since the volume and instance may be created
# in two different zones.
if not zone:
raise InvalidConfigurationException(
"A zone must be specified when launching with a"
" new blank volume block device mapping.")
new_vol = self.provider.block_store.volumes.create(
'',
device.size,
zone)
bd_type.volume_id = new_vol.id
bd_type.delete_on_terminate = device.delete_on_terminate
if device.size:
bd_type.size = device.size
else: # device is ephemeral
bd_type.ephemeral_name = 'ephemeral%s' % ephemeral_counter
return bdm
示例13: _get_bmap
# 需要导入模块: from boto.ec2.blockdevicemapping import BlockDeviceType [as 别名]
# 或者: from boto.ec2.blockdevicemapping.BlockDeviceType import ephemeral_name [as 别名]
def _get_bmap(self, params):
bmap = BlockDeviceMapping()
for device in params['bmap']:
if not 'name' in device.keys():
self.logger.debug('bad device ' + str(device))
continue
dev = BlockDeviceType()
if 'size' in device.keys():
dev.size = device['size']
if 'delete_on_termination' in device.keys():
dev.delete_on_termination = device['delete_on_termination']
if 'ephemeral_name' in device.keys():
dev.ephemeral_name = device['ephemeral_name']
bmap[device['name']] = dev
return bmap
示例14: _parse_block_device_mappings
# 需要导入模块: from boto.ec2.blockdevicemapping import BlockDeviceType [as 别名]
# 或者: from boto.ec2.blockdevicemapping.BlockDeviceType import ephemeral_name [as 别名]
def _parse_block_device_mappings(self):
block_device_map = BlockDeviceMapping()
for mapping in self.block_device_mapping_dict:
block_type = BlockDeviceType()
mount_point = mapping.get('device_name')
if 'ephemeral' in mapping.get('virtual_name', ''):
block_type.ephemeral_name = mapping.get('virtual_name')
else:
block_type.volume_type = mapping.get('ebs._volume_type')
block_type.snapshot_id = mapping.get('ebs._snapshot_id')
block_type.delete_on_termination = mapping.get('ebs._delete_on_termination')
block_type.size = mapping.get('ebs._volume_size')
block_type.iops = mapping.get('ebs._iops')
block_device_map[mount_point] = block_type
return block_device_map
示例15: startCluster
# 需要导入模块: from boto.ec2.blockdevicemapping import BlockDeviceType [as 别名]
# 或者: from boto.ec2.blockdevicemapping.BlockDeviceType import ephemeral_name [as 别名]
def startCluster(self, argv):
if len(argv) != 0:
print "ec2 startCluster"
sys.exit(-1)
regions = boto.ec2.regions()
regionInfo = '\n'.join(str(region).split(':')[1] for region in regions)
regionName = raw_input("select region:\n%s\n>>"%regionInfo)
region = boto.ec2.get_region(regionName)
conn = region.connect()
print "region connected successfully"
images = conn.get_all_images(owners='self')
imageInfo = '\n'.join(
str(image).split(':')[1] + ":" + image.name for image in images)
imageId = raw_input("enter imageId:\nself-created images:\n%s\n>>"%imageInfo)
instanceTypeInfo = ("m1.small, " "m1.large, " "m1.xlarge\n"
"c1.medium, " "c1.xlarge\n"
"m2.xlarge, " "m2.2xlarge, " "m2.4xlarge\n"
"cc1.4xlarge, " "t1.micro\n")
instanceType = raw_input("enter instanceType:\n%s\n>>"%instanceTypeInfo)
availZone = raw_input("enter placement[a,b,c]:\n>>")
availZone = regionName + availZone
diskSize = int(raw_input("enter disk size[G]:\n>>"))
rootDev = BlockDeviceType()
rootDev.name = 'root'
rootDev.size = diskSize
rootDev.delete_on_termination = True
instStorage = bool(raw_input("mount inst storage?\n>>"))
mapping = BlockDeviceMapping()
mapping['/dev/sda1'] = rootDev
if (instStorage == True):
eph0 = BlockDeviceType()
eph0.ephemeral_name = 'ephemeral0'
mapping['/dev/sdb'] = eph0
groups = conn.get_all_security_groups()
groupInfo = '\n'.join(str(group).split(':')[1] for group in groups)
group = raw_input("enter securityGroup:\n%s\n>>"%groupInfo)
keys = conn.get_all_key_pairs()
if len(keys) == 1:
key = keys[0].name
print 'using default key: ' + key
else:
keyInfo = '\n'.join(str(key).split(':')[1] for key in keys)
key = raw_input("enter key name:\n%s\n>>"%keyInfo)
numNodes = int(raw_input("number of nodes:\n>>"))
conn.run_instances(
imageId, min_count=numNodes, max_count=numNodes, placement=availZone,
security_groups = [group], instance_type=instanceType,
block_device_map=mapping, key_name=key)