aws 用boto脚本创建新instance
其实做为AWS管理员每天开操作平台其实风险还是比较高的,因为很多选项是支持多选的,有时候你可能不知道多选择了一个实例,在操作的时候很容易出 现人为事故,比如终止一个实例,不小心终止了其它实例,是件非常恶心的事,所以当平台熟悉后就要多用下脚本操作平台,很多时候你根本不用登录平台就可以完 成很多操作,今天因为开很多实例,抽空研究了怎么用boto实现创建一个实例的方法,如果你熟悉了平台操作,基本上脚本也很容易写了,写脚本不难,难在于 你对create instance的理解,建立一个实例都需要制定什么条件,我们一起来看看:
1、需要一个镜像文件
2、需要指定访问的key或创建一个key
3、指定实例类型
3、需要指定或新建一个安全组,而且要给出访问端口,然后增加安全组规则
如果简单建一个实例,传入以上参数就够了,如果要建立一个符合实际应用的instance就需要给出很多参数,具体可以参考官方文档启动一个实例的参数,可以灵活定制符合你业务的实例,好了,现在开始我们的代码工作吧:
#!/usr/bin/env python
import os
import time
import boto
from boto import ec2
#制定镜像ID,实例类型,key名称扩展和保存地址,安全组名称,访问的端口,tag名称(非必须)
def launch_instance(ami=’ami-a8xxxxx’,
instance_type=’t2.micro’,
key_name=’pro’,
key_extension=’.pem’,
key_dir=’~/.ssh’,
group_name=’bicher’,
ssh_port=22,
cidr=’0.0.0.0/0′,
tag=’pow’,
user_data=None):
#建立连接,创建key,非必须,你可以指定一个你现有的key
ec2 = boto.ec2.connect_to_region(‘your region’)
try:
key = ec2.get_all_key_pairs(keynames=[key_name])[0]
except ec2.ResponseError, e:
if e.code == ‘InvalidKeyPair.NotFound':
print ‘Creating keypair: %s’ % key_name
key = ec2.create_key_pair(key_name)
key.save(key_dir)
else:
raise
#创建安全组
try:
group = ec2.get_all_security_groups(groupnames=[group_name])[0]
except ec2.ResponseError, e:
if e.code == ‘InvalidGroup.NotFound':
print ‘Creating secuity group:%s’ % group_name
group = ec2.create_security_group(group_name, ‘A gourp description’)
else:
raise
#增加安全组策略
try:
group.authorize(‘tcp’, ssh_port, ssh_port, cidr)
except ec2.ResponseError, e:
if e.code == ‘InvalidPermission.Duplicate':
print ‘security group: %s already authorized’ % group_name
else:
raise
#启动实例
reservation = ec2.run_instances(ami, key_name=key_name, security_groups=[group_name], instance_type=instance_type, user_data=user_data)
instance = reservation.instances[0]
print ‘relax a moment :’
while instance.state != ‘running':
print ‘.’
time.sleep(5)
instance.update()
print ‘done’
#instance.add_tag(tag)
return instance
launch_instance(ami=’ami-a8xxxxx’,\
instance_type=’t2.micro’,\
key_name=’test20150513′,\
key_extension=’.pem’,\
key_dir=’~/.ssh’,\
group_name=’your group name’,\
ssh_port=22,\
cidr=’0.0.0.0/0′,\
tag=’pro’,\
user_data=None)
以上就是全部代码了,部分我加了注释,整体的流程跟在页面上操作基本一样,只不过在页面选择的内容,需要在代码里指定好,比如镜像id等