Boto:利用Python将自动化机制引入AWS服务
2015-09-18 19:04
896 查看
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 |
1 | python-pipinstallboto |
12 | 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 importboto.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'] ) |
预设停止实例。现在假设大家希望在每天的特定时间点停止自己的测试环境实例,那么运行:
123456 | #/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']) |
CloudFront无效化。AWS并不提供面向CloudFront的命令行工具。因此,如果大家希望弃用某些对象,则需要登录至控制台并将相关对象添加到无效类别当中。整个过程非常漫长而且相当繁琐。不过不用担心,现在我们可以利用Boto库来完成这项任务:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #/usr/bin/python importboto dist_id='xxxxxxxxxxx' invalidation_path='/home/ec2-user/invalid.txt' defmain(): paths=open(invalidation_path,"r+") conn=boto.connect_cloudfront() inval_req=conn.create_invalidation_request(dist_id,paths) printinval_req touch=open(invalidation_path,"w") touch.write("") if__name__=='__main__': main() |
Boto所支持的AWS服务
截至目前,Boto能够支持超过五十种Amazon服务,具体涵盖计算、数据库、应用程序以及支付与计费等领域。大家可以点击此处查看Python.org网站上的完整列表。
总结
Boto允许大家编写各类脚本,从而实现Amazon云环境当中各类复杂的设置管理工作。除此之外,它还能够支持Google Storage等其它多种公有云服务,外加Eucalyptus、OpenStack以及OpenNebula等私有云系统。
如果大家拥有一定程度的Python编写经验并且珍惜自己的宝贵时间,请千万不要错过Boto这款出色的解决方案。
原文链接:
http://cloudacademy.com/blog/boto-using-python-to-automate-aws-services/
核子可乐译
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例
- Python 七步捉虫法