如何利用python boto3 访问aws ec2 删除实例实例中的cpu利用率等信息

aws 用boto脚本创建新instance |
扫描关注,随时随地查看精选技术文章!
2017年十月
161718192021
23242526272829亚马逊 AWS T2 一种能累积计算积分的EC2实例类型_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
亚马逊 AWS T2 一种能累积计算积分的EC2实例类型
亚马逊AWS从2006年开始,将关键的基础设施服...|
总评分0.0|
&&如果您打算在AWS 云端运行一个小型的Web Server,或是一个小型的数据库,平时并没
有大量的工作负载,在绝大多数时间里,您的实例并不需要消耗大量的CPU 资源。但是,
再不怎么受欢迎的博客也可能会有突然被追评的那几分钟,再小型的数据库也可能会有数据
加载时那忙碌的几十分钟, BuildServer 在Build 代码时自然也希望有“请勿打扰”的时刻。
面对这种平时CPU 负载非常低,但有时CPU 资源却在短时间内捉襟见肘的情况。
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩2页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢1977人阅读
pyhton(15)
背景介绍:
最近开发一个脚本服务,需要使用AWS service, 所以就了解了一下Boto的使用,看到国内相关文档特别少,只有英文文档介绍,对于英文不好的朋友比较不友善,这里给大家几本介绍一下Boto。然后会给出几个使用AWS的服务Python代码的例子。
一、Boto3 介绍
Boto is the Amazon Web Services (AWS) SDK for Python, which allows Python developers to write software that makes use of Amazon services like S3 and EC2. Boto provides an easy to use, object-oriented API as well as low-level direct service access.
Boto 是AWS的基于python的SDK(当然还支持其他语言的SDK,例如Ruby, Java等),Boto允许开发人员编写软件时使用亚马逊等服务像S3和EC2等,Boto提供了简单,面向对象的API,也提供了低等级的服务接入。这里大家要区分,Boto有两个版本,其中旧的版本boto2已经不推荐使用了,在一些亚马逊新建的region已经不支持旧的Boto2了(貌似中国就是这样的),所以如果开发Python代码的话建议大家使用Boto3,为什么不推荐Boto2呢?应为Boto2大概是2006年开发的,现在的好多的服务当时都没有开发出来,所以Boto2点设计没有考虑后续的这么多新增多服务,所以重新开发了Boto3.
二. 如何安装Boto
你可以使用以下命令安装Boto3
Install the latest Boto 3 release via pip:
pip install boto3
You may also install a specific version:
pip install boto3==1.0.0
如果你使用的是EC2作为开发主机的话可以直接运行一下命令保存你的证书:
aws configure
或者直接修改位于 加目录下的稳健
~/.aws/credentials:
aws_access_key_id = YOUR_ACCESS_KEY
aws_secret_access_key = YOUR_SECRET_KEY
但是如果你是自己的MAC或者Linux机器上你也可以安装AWS CLI使用一下命令:
pip install awscli
注意如果你的本机的python的版本是2.7的话可能会报错”No module named concurrent.futures”,你可以通过安装以下模块解决问题:
pip install futures
有很多朋友肯定是第一使用AWS的服务,可能会怀疑一下两个key到底是那里获得的:
aws_access_key_id = YOUR_ACCESS_KEY
aws_secret_access_key = YOUR_SECRET_KEY
这篇文章应该可以解决大家的问题,但是是英文的,国内的好像都不够新和完整。
三 、测试有木有安装成功
Python 2.7.10 (v2.7.10:15c95b7d81dc, May 23 2015, 09:33:12)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
&&& import boto3
没有报错,可以正常使用了。
官方文档:
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:47298次
积分:1244
积分:1244
排名:千里之外
原创:75篇
转载:24篇
(1)(4)(2)(2)(1)(4)(4)(1)(4)(2)(1)(1)(2)(5)(6)(1)(1)(8)(2)(3)(1)(5)(5)(8)(5)(6)(6)(3)(2)(5)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'最近在用boto3编写AWS的lamda函数,学习到了boto3中的一些基本概念与使用方法。在此进行总结。
1. boto3提供了两个级别的接口来访问AWS服务:High Level的Resource级别的接口,Low Level的Client接口。
  Client级别的接口则是返回Dictionary来表示查询到的资源信息。而Resource级别的接口是对Client级别的接口进行了面向对象的封装,接口的返回值大部分都是Resource对象(如果返回值是某个Resource的信息的话),我们可以对返回的对象再进行操作(比如删除,修改等)。
2. session
  session是对一组configuration的抽象表达,通过同一session调用的所有api共享一组configuration. session也是访问所有API的入口。默认的session是boto3.& & & 所以一般通过如下代码来得到Resource级别的API对象和Client级别的API对象:
& & & res = boto3.resource('service name')
& & & client = boto3.client('service name')
3. resource
& & 这是Resource级别接口里面的概念,Resource分为Service Resource和Individual Resource. Service Resource表示某个服务,而Individual Resource表示某个服务里面的资源
3.1 resource identifier
& & & Resource的唯一标示符,一般就是id或是url。很明显Service Resource不需要identifier,因为它是通过名字标识(例如:'ec2')
3.2 attribute
& & & 其实就是Resource的属性
3.3 action
& & & 就是Resource支持的操作
3.4 subResource
& & & Resource的子级Resource,可以通过identifier来获取Resource对象
3.5 collection
& & & Resource的子级Resource的集合,可以对collection进行查询,筛选等(对AWS的网络请求只有在collection执行操作(遍历,转换为list, 批量处理)的时候才会产生并发出)
4. 一般使用方式
4.1 Resource级别
var serviceRes = boto3.resource('ec2') //得到Service Resource
var instance = serviceRes.create_instances(**kwargs) //执行Service Resource级别的操作
var instance = serviceRes.Instance(id) // 通过identifier得到Sub Resource(Individual Resource)
var instances = serviceRes.instances.filter(filter) // 通过filter得到一个Sub Resource的collection
instance.start() //执行Sub Resource上的操作
4.2 Client级别
var ec2Client = boto3.client('ec2') //得到对应服务的client
ec2Client.run_instances(**kwargs) //执行操作
阅读(...) 评论()中国领先的IT技术网站
51CTO旗下网站
AWS宝典:如何在亚马逊EC2上部署API?
对于刚接触AWS(亚马逊网络服务)的人来说,学习起来难度相当大。于是我们为读者整理出了若干条最佳实践,做成这篇简短教程。除了亚马逊EC2(弹性计算云)外,我们还会使用Ruby Grape这种微型框架来构建API接口,并使用Nginx代理系统来处理访问控制。
作者:布加迪编译来源:51CTO| 10:13
【51CTO精选译文】我们觉得亚马逊是一种用来运行API(应用编程接口)的出色平台,因为你可以全面控制应用程序堆栈。对于刚接触AWS(亚马逊网络服务)的人来说,学习起来难度相当大。于是我们为读者整理出了若干条最佳实践,做成这篇简短教程。除了亚马逊EC2(弹性计算云)外,我们还会使用Ruby Grape这种微型框架来构建API接口,并使用Nginx代理系统来处理访问控制。最棒的是,本教程中提到的所有一切都是完全免费的!
就该教程而言,你需要基于Ruby的运行中API和Thin服务器。要是没有这样一个API,你只要克隆示例软件库,如下所述(参阅&部署应用程序&部分)。
现在,我们将开始构建和配置亚马逊EC2实例。要是你已经有了EC2实例(无论是不是微型实例),就可以直接跳到下一步:准备部署的实例。
构建和配置EC2实例
首先不妨注册亚马逊弹性计算云(Amazon EC2)。就我们的要求而言,免费服务/free/就够用了,它可以满足所有的基本要求。一旦设立好了帐户,进入到AWS管理控制台下面的EC2仪表板,点击Launch Instance(启动实例)按钮。这会让你进入到一个弹出窗口,你可以在里面继续下一步:
&选择经典向导。
&选择AMI(Ubuntu Server 12.04.1 LTS 32位和微型实例),Instance Details(实例细节)的其他所有设置都不用改动,随它保持默认值。
&创建密钥对,并下载密钥对DD这将是你用来与服务器之间建立SSH连接的密钥对,密钥对非常重要!
&为防火墙添加入站规则,源地址始终是0.0.0.0/0(HTTP、HTTPS、ALL ICMP和Ruby Thin服务器使用的TCP端口3000)。
准备部署的实例
现在,我们已让实例构建并运行起来,我们可以直接通过控制台来连接(Windows用户可以通过PuTTY来连接)。鼠标右击实例,连接实例,并选择Connect with a standalone SSH Client(使用独立的SSH客户端来连接)。
逐步完成下列步骤,在给出的实例中将用户名改成ubuntu(而不是root)。
完成这一步后,你就连接到了实例。我们还需要安装新的软件包。一些软件包需要root登录资料(凭证),所以你需要设置一个新的root密码:sudo passwd root。然后以root用户身份登录:su root。
现在已有了root登录资料,执行:
sudo apt-get update
使用exit命令切换回到普通用户,并安装所有的必需软件包:
&安装rvm、ruby和git需要的一些库:
sudo apt-get install build-essential git zlib1g-dev libssl-dev libreadline-gplv2-dev
imagemagick libxml2-dev libxslt1-dev openssl zlib1g libyaml-dev libxslt-dev autoconf libc6-
dev ncurses-dev automake libtool bison libpq-dev libpq5 libeditline-dev
sudo apt-get install libreadline6 libreadline6-dev
&安装git(在Linux上,而不是来自源文件):http://www./book/en/Getting-Started-Installing-Git
&安装rvm:https://rvm.io/rvm/install/
&rvm install 1.9.3
&rvm use 1.9.3 --default
部署应用程序
我们的示例Sentiment API位于Github上。试着克隆软件库:
git clone :jerzyn/api-demo.git
你可以在这里再次审查构建和部署该应用程序方面的代码及教程:
http://www.3scale.net/2012/06/the-10-minute-api-up-running-3scale-grape-heroku-api-10-minutes/
还有这里:
http://www.3scale.net/2012/07/how-to-out-of-the-box-api-analytics/
要注意其中的变化(我们使用的只是v1,因为代理系统需要完成验证)。
现在你可以部署应用程序,只要运行命令:bundle install.
现在你可以开启Thin服务器:thin start.
想直接访问API(即没有任何安全或访问控制):your-public-dns:3000/v1/words/awesome.json(你可以在实例细节窗口中的AWS EC2仪表板&实例中找到你的公共DNS)。
如果还想使用Nginx,你需要创建一个弹性IP地址。在AWS EC2仪表板里面,在与实例相同的区域里面创建弹性IP,并将该IP与它关联起来(你没必要为弹性IP花一分钱,只要它与你同一区域里面的实例关联起来)。
选项:如果你想为亚马逊实例分配自定义域,就要做一件事:
&将A记录添加到域的DNS记录,以便将该域与你之前创建的那个弹性IP地址对应起来。你的域提供商应该会为你提供设置A记录(IPv4地址)的某种方式,或者它会为你提供编辑域名称服务器的方式。如果提供商不允许你直接设置A记录,找到一项DNS管理服务,在上面将你的域注册为一个区(zone),该服务就会在域提供商的管理面板你提供需要输入的名称服务器。然后,你可以为域添加A记录。一些可能的DNS管理服务包括ZoneEdit(基础版免费)和亚马逊route 53等。
至此,你的API已向世人开放。这既是好事又是坏事DD说它是好事,是因为可以与人共享API;说它是坏事,是因为要是不实行速率限制(rate limit),几个应用程序就会耗尽你服务器的资源,而且你也不知道谁在使用你的API、API在如何使用。解决办法就是,为你的API添加一些管理功能。
借助3scale启用API管理功能
我们将充分利用使用方便的3scale API管理服务,而不是从事重复性工作,从头开始实行速率限制、访问控制和分析。注册获得免费的3scale帐户(http://www.3scale.net/),通过几个提供的链接,激活并登录进入到新实例。你第一次登录时,可以选择这个选项:创建一些示例数据,那样你拥有之后用到的一些API密钥。下一步,你可能要浏览一下系统功能(可选),然后开始实施工作。
想立即获得一些结果,我们就要从开发过程中用到的沙盒代理系统开始入手。然后,我们还将配置Nginx代理系统,它可以扩展规模,以适应标准的生产部署环境。API代理系统的配置方面有一些说明文档,详见:https://support.3scale.net/howtos/api-configuration/nginx-proxy。想了解更高级的配置选项,可以参阅:https://support.3scale.net/howtos/api-configuration/nginx-proxy-advanced。
一旦你进入到了3scale帐户,在主仪表板屏幕上启动你的API,或者进入到API-&选择Service &API&(服务API)-&侧栏中的Integration(集成)-&Proxy(代理)。
设好API后端部分的地址DD这必须是个弹性IP地址,除非自定义域已设置好,包括http协议和端口3000。现在,你可以保存并启动沙盒代理系统,通过访问沙盒端点来测试API(在创建了一些应用程序登录资料后): http://sandbox-endpoint/v1/words/awesome.json?app_id=APP_ID&app_key=APP_KEY。其中,APP_ID和APP_KEY是你在首次登录到3scale帐户后创建的其中一个示例应用程序的ID和密钥(如果你错过了帐户创建这一步,只要创建开发者帐户以及该帐户里面的应用程序)。
不用应用程序登录资料试一下,接下来使用不正确的登录资料试一下;然后一旦通过验证,在你定义的任何速率限制范围之内和之外再试一下。只有其表现让你满意,你才需要为Nginx下载配置文件。
注意:一旦遇到错误,就要检查你是否能直接访问API:your-public-dns:3000/v1/words/awesome.json。要是该API不可用,那么你就要检查AWS实例是否在运行、Thin服务器是否在该实例上运行。
部署Nginx代理系统以实现访问控制
为了简化这一步,我们建议你安装出色的OpenResty Web应用程序,它基本上捆绑了标准的Nginx核心以及几乎所有必要的第三方Nginx内置模块。
安装依赖项:sudo apt-get install libreadline-dev libncurses5-dev libpcre3-dev perl
编译和安装Nginx:
&sudo wget http://agentzh.org/misc/nginx/ngx_openresty-1.2.3.8.tar.gz
&sudo tar -zxvf ngx_openresty-1.2.3.8.tar.gz
&cd ngx_openresty-1.2.3.8/
&./configure --prefix=/opt/openresty --with-luajit --with-http_iconv_module -j2
&sudo make install
现在,你可以从3scale代理页面下载Nginx配置文件了;在配置文件中,进行下列更改:
&编辑来自nginx下载的配置文件
&在第28行(上一行是更改服务器名称的信息),输入正确的域(你的弹性IP或自定义域名)
&在第78行,将路径改为指向与配置文件一同下载的.lua文件。
我们几乎大功告成了!最后一个步骤是开启NGINX代理系统,让一些流量通过它。要是它还没有运行(切记:首先得开启那台Thin服务器),务必进入到EC2实例终端(你之前通过SSH连接的那个终端),然后现在开启它:
sudo /opt/openresty/nginx/sbin/nginx -p /opt/openresty/nginx/ -c /opt/openresty/nginx/conf/YOUR-CONFIG-FILE.conf
最后一步将是验证流量正常通过,并通过了应有的验证。为此,访问:
http://your-public-dns/v1/words/awesome.json?app_id=APP_ID&app_key=APP_KEY
其中,APP_ID和APP_KEY是你想通过API调用来访问的那个应用程序的密钥和ID。一旦证实一切都正常运行,你就需要阻止公众通过端口3000对API后端部分进行访问,端口3000绕过了任何访问控制机制。
要是Nginx配置方面遇到了一些问题,或者需要介绍更详细的指南,我鼓励你阅读配置Nginx代理系统方面的这篇指南文章: https://support.3scale.net/howtos/api-configuration/nginx-proxy。你完全可以对你的API网关进行定制。如果你想深入探究3scale的系统配置(比如用法和API流量的监控),欢迎浏览&快速入门&指南(https://support.3scale.net/get-started/fast-track-integration)和实用指导(https://support.3scale.net/howtos/basics#manage-admins)。
【编辑推荐】
【责任编辑: TEL:(010)】
大家都在看猜你喜欢
热点原创热点头条头条
24H热文一周话题本月最赞
讲师:126135人学习过
讲师:133506人学习过
讲师:17562人学习过
精选博文论坛热帖下载排行
本书在全面介绍微软最新网络操作系统Windows Server 2003的基础上,简要地介绍了UNIX和Linux两大操作系统的代表产品:Sun(太阳)公司的Sol...
订阅51CTO邮刊

我要回帖

更多关于 boto3 ec2 的文章

 

随机推荐