Boto:利用Python将自动化机制引入亚马逊云科技云服务

 

 

Boto允许大家编写部分脚本,从而以自动化方式实现AWS EC2实例启动等常见操作。

 

Boto是一套Python软件包,旨在将编程性连接引入Amazon Web Services当中。

Amazon Cloud提供一系列可对服务器资源进行动态规模伸缩的服务方案,具体包括核心计算服务、Elastic Compute Cloud(即弹性计算云,简称EC2)、多种存储机制、负载均衡工具以及DNS等等。大家可以通过AWS控制台或者利用AWS的扩展API对这些服务加以控制。不过除此之外,大家还可以利用多种第三方库使用该API。在Python领域,我们可以选择Boto。Boto允许用户编写各种便利的脚本方案,从而以自动化方式实现多种常见操作,例如启动或停止EC2实例,或者定期为服务器保存快照等。

在Linux(CentOS)平台上安装Boto

 

1.大家首先需要使用yum软件包管理器来安装Python与pipPython软件包安装工具:

 
1
yum install python python - devel python - pip

 

2.现在我们将通过pip安装Boto软件包:

 

 
1
python - pip install boto

 

 

3.最后,我们可以测试一切是否已经被成功安装到自己的Linux设备之上:

 

 
1
2
python -c "import boto; print boto.Version"
2.9.6

 

配置AWS凭证

 

在首次启动时,Boto库会搜索以下位置中的配置文件(按先后次序):

  • /etc/boto.cfg – for site-wide settings for all users on this machine
  • ~/.boto – for user-specific settings

用例

让我们首先从基本场景入手:启动一个EC2实例

 
1
2
3
4
5
6
7
8
9
10
#/usr/bin/python
 
import boto . ec2
conn = boto . ec2 . connect_to_region ( "us-west-2" )
conn . run_instances (
     'ami-6ac2a85a' ,
     key_name = 'nitheesh_oregon' ,
     instance_type = 't1.micro' ,
     security_groups = [ 'nitheesh_oregon' ]
)

 

 

以上Python脚本会接入到Amazon的美国西部区域基础设施并利用AMI id:ami-6ac2a85a启动一个实例。

预设停止实例。现在假设大家希望在每天的特定时间点停止自己的测试环境实例,那么运行:

 

 

 
1
2
3
4
5
6
#/usr/bin/python
 
import boto . ec2
 
conn = boto . ec2 . connect_to_region ( "us-west-2" )
conn . stop_instances ( instance_ids = [ 'instance-id-1' , 'instance-id-2' ] )

 

大家可以通过创建一个cron任务来确保该脚本在每一天的特定时间点执行相关预设操作。

 

CloudFront无效化。AWS并不提供面向CloudFront的命令行工具。因此,如果大家希望弃用某些对象,则需要登录至控制台并将相关对象添加到无效类别当中。整个过程非常漫长而且相当繁琐。不过不用担心,现在我们可以利用Boto库来完成这项任务:

 

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#/usr/bin/python
import boto
 
dist_id = 'xxxxxxxxxxx'
invalidation_path = '/home/ec2-user/invalid.txt'
 
def main ( ) :
     paths = open ( invalidation_path , "r+" )
     conn = boto . connect_cloudfront ( )
     inval_req = conn . create_invalidation_request ( dist_id , paths )
 
     print inval_req
     touch = open ( invalidation_path , "w" )
     touch . write ( "" )
 
if __name__ == '__main__' :
     main ( )

 

以上脚本会读取特定文件当中的对象,将其设定为无效,输出一个无效ID,最后清除invalid.txt文件当中的内容。

 

Boto所支持的AWS服务

 

截至目前,Boto能够支持超过五十种Amazon服务,具体涵盖计算、数据库、应用程序以及支付与计费等领域。大家可以点击此处查看Python.org网站上的完整列表。

 

总结

 

Boto允许大家编写各类脚本,从而实现Amazon云环境当中各类复杂的设置管理工作。除此之外,它还能够支持Google Storage等其它多种公有云服务,外加Eucalyptus、OpenStack以及Open Nebula等私有云系统。

 

如果大家拥有一定程度的Python编写经验并且珍惜自己的宝贵时间,请千万不要错过Boto这款出色的解决方案。

 

原文链接:

http://cloudacademy.com/blog/boto-using-python-to-automate-aws-services/

核子可乐译

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值