AWS 使用经验
掐指一算,自己第一次使用 AWS 已经是两年前的事情了,这也是云计算和大数据等技术迅猛发展的两年。这期间,大抵间间断断地使用着,FreeTier Instance 也运行快一年了,马上进入收费周期。虽然中间用过一段 Aliyun 的产品(被坑了不少钱),同时现在每月给DigitalOcean 贡献 $5,但是只有AWS的培训有参加过,几个活也是用AWS完成的,算是了解得比较深入。这里且记录一下使用经验,算是总结,也是一种知识梳理。
由于比较常用计算密集型的任务,选择EC2 Spot Instances + SQS + S3的组合较为符合需求。在不需要Auto Scaling的情况下,主要的思路如下:
- Sending EC2 Spot Instances Requests
- Sending Messages into SQS
- Start python scripts on EC2 instances
- Upload python scripts to S3 and download it on EC2 instances
- Get Messages from SQS and saving results to S3
SQS 是一个消息队列系统,以服务的方式提供后,对于整个架构中各模块的解耦是非常有用的。S3用于存储初始数据和处理结果,以及启动脚本。EC2 就是处理数据的节点。
1. S3
s3 = boto.connect_s3(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
bucket = s3.get_bucket(DATA_BUCKET)
key = bucket.new_key(KEY_BOOT)
#key.set_contents_from_string(startup)
key.set_contents_from_filename(SCRIPT_BOOT)
2. SQS
def send_message_sqs(q, id):
message = q.new_message(body=simplejson.dumps({"key":id}))
print q.write(message) sqs = boto.connect_sqs(KEY, SECRET)
q = sqs.create_queue(REQUEST_QUEUE)
for id in ids:
send_message_sqs(q, str(id))
3. EC2 Spot Instances
request = conn.request_spot_instances(price=AWS_MAX_PRICE,
image_id=AWS_IMAGE_ID,
count=AWS_INSTANCE_COUNT,
type=AWS_REQUEST_TYPE,
key_name=AWS_KEY_NAME,
security_groups=AWS_SECURITY_GROUPS,
instance_type=AWS_INSTANCE_TYPE,
placement=AWS_PLACEMENT,
user_data=BOOTSCRIPT % {
'KEY' : AWS_ACCESS_KEY_ID,
"SECRET" : AWS_SECRET_ACCESS_KEY,
"DATA_BUCKET" : DATA_BUCKET,
"KEY_BOOT" : KEY_BOOT,
'BOOT_SCRIPT_PATH': SCRIPT_BOOT_PATH_SPOT
})
http://aws.amazon.com/ec2/purchasing-options/spot-instances/spot-and-science/
AWS 使用经验的更多相关文章
- AWS助理架构师认证考经
上周考了亚马逊的解决方案架构师-助理级别的认证考试并顺利通过.这也算是对自己AWS服务熟悉程度的一种检验.在准备考试的过程中,把自己学习到的AWS知识都梳理了一遍,也算是收获颇丰.这次特意分享了该认证 ...
- AWS认证权威考经(助理级认证篇)
笔者作为AWS官方认证的早期通过者,已经拿到了AWS的助理级解决方案架构师.开发者认证,系统管理员认证.这几年也陆续指导公司多人通过AWS的认证.本篇文章将分享如何通过自学的方式轻松通过AWS的助理级 ...
- [转帖]Oracle 12cR2使用经验
大规模升级来临,谈谈Oracle 12cR2使用经验 随着2019年2月13日,Oracle 19c (Oracle 12.2.0.3) for Exadata 版本发布,Oracle 12cR2体系 ...
- 在AWS Glue中使用Apache Hudi
1. Glue与Hudi简介 AWS Glue AWS Glue是Amazon Web Services(AWS)云平台推出的一款无服务器(Serverless)的大数据分析服务.对于不了解该产品的读 ...
- 使用AWS亚马逊云搭建Gmail转发服务(三)
title: 使用AWS亚马逊云搭建Gmail转发服务(三) author:青南 date: 2015-01-02 15:42:22 categories: [Python] tags: [log,G ...
- 基于Kubernetes在AWS上部署Kafka时遇到的一些问题
作者:Jack47 转载请保留作者和原文出处 欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源. 交代一下背景:我们的后台系统是一套使用Kafka消息队列的数据处理管线 ...
- AWS的SysOps认证考试样题解析
刚考过了AWS的developer认证,顺手做了一下SysOps的样题.以下是题目和答案. When working with Amazon RDS, by default AWS is respon ...
- AWS开发人员认证考试样题解析
最近在准备AWS的开发人员考试认证.所以特意做了一下考试样题.每道题尽量给出了文档出处以及解析. Which of the following statements about SQS is true ...
- 使用AWS亚马逊云搭建Gmail转发服务(二)
title: 使用AWS亚马逊云搭建Gmail转发服务(二) author:青南 date: 2014-12-31 14:44:27 categories: [Python] tags: [Pytho ...
随机推荐
- c++/ boost 库常见错误及解决方法总结
1. error LNK2019: 无法解析的外部符号 "class boost::system::error_category const & __cdecl boost::sys ...
- Python 进程间的通信
#-*-coding:utf-8-*- '''python提供了多种进程间的通信方式,如:Queue,Pipe,Valie+Array等. Queue与Pipe的区别在于Pipe常用来在两个进程间通信 ...
- opencv ---getRotationMatrix2D函数
getRotationMatrix2D函数 主要用于获得图像绕着 某一点的旋转矩阵 Mat getRotationMatrix2D(Point2f center, double angle, dou ...
- pyspider框架的599证书问题
使用PySpider 框架出现错误 HTTP 599: SSL certificate problem: unable to get local issuer certificate,如下 HTTP ...
- Java基础-原码反码补码
Java基础-原码反码补码 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 注意,我们这里举列的原码和反码只是为了求负数的补码,在计算机中没有原码,反码的存在,只有补码. 一.原码 ...
- SQL存储过程例子
存储过程呢,学校里学习的都是简单的.这里是我在工作的时候写的存储过程,贴出来,其中公司相关我都XXX代替了 (注:这个例子可以算是动态SQL的例子了,写死的是静态SQL,这个很灵活的传入参数的是动态S ...
- 怎么使用 JavaScript 将网站后台的数据变化实时更新到前端
实时这个工作现在大体有两种方法一.前端不断地向后台轮询请求数据查询的接口(不管你是用AJAX还是什么)然后将返回的数据重绘在页面上,这以前端页面为主动的方式.二.如果浏览器支持Websocket 那么 ...
- angularJs的继承
为什么要继承,本来是后端的概念,但是同样适用于前端开发.继承,无疑是将通用的东西抽取出来. 下面介绍的是angular的伪继承,就是说是通过继承scope这个变量来实现的.代码很简单,一行代码就可以. ...
- bzoj千题计划248:bzoj3697: 采药人的路径
http://www.lydsy.com/JudgeOnline/problem.php?id=3697 点分治 路径0改为路径-1 g[i][0/1] 和 f[i][0/1]分别表示当前子树 和 已 ...
- Extending Markov to Hidden Markov
Extending Markov to Hidden Markov a tutorial on hidden markov models, Hidden Markov Models, hidden m ...