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 ...
随机推荐
- mongoDB学习--建库、删库、插入、更新
在讲之前我们说一下mongoDB的一些基本概念,我们对比关系型数据库能更直观的理解 SQL术语/概念 MongoDB术语/概念 说明 database database 数据库 table colle ...
- Codeforces - 1020B Badge(找环)
题意: 以每个点为起点,找到第一个出现两次的点 解析: 我是先找出来所有的环 环上的点找出来的肯定是自己 bz[i] = i; 然后去遍历不在环上的点j 如果通过这个点找到一个已经标记的的点i ...
- LANMP环境编译参数查看方法
nginx编译参数查看:/usr/local/nginx/sbin/nginx -V apache编译参数查看:cat /usr/local/apache2/build/config.nice mys ...
- python之旅:并发编程
一 背景知识 顾名思义,进程即正在执行的一个过程.进程是对正在运行程序的一个抽象. 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一.操作系统的其他所 ...
- HDU 4280 ISAP+BFS 最大流 模板
Island Transport Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Other ...
- 项目实战SportsStore——订单处理模块
前面的步骤如果顺利完成,你的网站运行之后应该能够正常显示下面三个页面: 1.产品列表 2.购物车内容页面 在某个商品后面点击“添加到购物车”则出现下图页面: 此页面上点击“继续购物”按钮则返回到产品列 ...
- libvirt工具实现虚拟机管理
libvirt工具实现虚拟机管理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.介绍virt-install命令的常用参数 virt-install是一个命令行工具,它能够为K ...
- vue element-ui 实现点击查看审核记录
<el-dialog title="审核信息" :visible.sync="seeVisible" width="30%" :bef ...
- POJ - 1753 Flip Game(状压枚举)
https://vjudge.net/problem/POJ-1753 题意 4*4的棋盘,翻转其中的一个棋子,会带动邻接的棋子一起动.现要求把所有棋子都翻成同一种颜色,问最少需要几步. 分析 同一个 ...
- Codeforces 543 B. World Tour
http://codeforces.com/problemset/problem/543/B 题意: 给定一张边权均为1的无向图. 问至多可以删除多少边,使得s1到t1的最短路不超过l1,s2到t2的 ...