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/
核子可乐译