AWS免费套餐普照到我朝,已经有一段时间了,一直想玩玩。过年期间得空试了一下,果然不负地球上最受欢迎云服务的名号,功能强大,文档齐全,不花钱也能用得很爽。作为一个职业踩坑者,也分享一下从零开始的踩坑心得,很多教训在网上几乎找不到资料,都是慢慢试出来的。
这里的“零”是指对AWS实际操作流程的认知基本为零,不意味着你是个技术小白或对云服务毫无概念的人也能从中得益。要能实作,还是需要有一些基本的背景知识。
然后是AWS的入门,可以看看这里,其中,有一个搭建AWS各部件关系架构图,好好看看,认识基本实体概念及其相互联系是入门的第一步。 然后具体使用,感兴趣的读者可以自己看着文档去试了,这里不打算step-by-step教你怎么用,AWS的文档已经很详尽了。下面都是一些常见的坑,或者我觉得对自己非常有帮助的点。
服务注册
有一个电话认证环节,会有自动语音给你拨电话过来,讲英文,让你用键盘或口头说话输入屏幕显示的四个数字。我用手机尝试时,各种失败,搜索发现很多人都碰到这个问题,解决方法是换坐机,一次搞定。
地区
很多服务的开通是分地区的,就是注册成功后进入console右上角那个zone。不同地区之间很多服务在后台是没打通的,也就是看不到其它地区的服务。但一旦产生费用,你在账单里就会看到不同地区各个服务类别的费用。一开始我在默认的Oregan开了个EC2,然后意识到应该到Tokyo,切换地区后按文档玩了一会,回来死活找不到第一个EC2实例,以为什么时候删掉了,直到收到账单后才发现不同地区的服务列表。
免费套餐
免费套餐面向全球的人们,从注册开始持续一年。但是每样服务有一定的限额(具体限额看这里),而且首次开通AWS的时间必须在2010年10月21日或之后(不是amazon的注册时间),我就是因为09年的时候开通过一次,这次再使用就无法享受免费套餐,只能新开一个账号。
Beanstalk
从beanstalk起步会帮你跨过很多坑,不用你单独去申请和配置像EC2、RDS、Security Groups、Load Balance等等一大堆的服务然后把它们连接起来,它都帮你做好了。它类似于GAE的开发模式,通过本地命令行就可以搞定开发和部署,但你还拥有自己专属的EC2实例。
登录beanstalk配置的EC2实例
默认beanstalk启动的EC2实例无法通过ssh连接,如果想连接,首先要修改Security Groups(相关文档),开放ssh端口(默认只有80端口的http服务),然后需要新建一个key pair,把它通过beanstalk console给自己EC2的实例关联上,详情见这里的文档。然后就可以ssh当虚拟机用了。
巧用EC2
访问AWS文档和服务的页面刷新速度非常慢,用上面的办法登上EC2实例后,在本地做一个ssh tunnel为代理再访问,速度飞快。
连接RDS
RDS默认在本地连不上,在EC2可以连上。可以修改RDS实例的Security Groups规则,inbound增加一个mysql规则,source是默认的0.0.0.0/0,就能从任何地方连上。但从安全角度考虑,并不主张这样。
EC2上几个重要路径
- python环境的路径:/opt/python/run/venv
- app的路径:/opt/python/current/app
- error log:/var/log/httpd/error_log
可以跑到服务器上用venv下的python运行app下的入口程序,启动实例,有时会方便你做一些调试。但这个会缺少load balance和服务配置的依赖、环境变量等等,不要乱用。
console的log是snapshot,登录EC2直接tail上述的error log就能捕获到实时出错了。
Flask web service
如果遵照文档教程,搭一个flask的web service,flask实例名(即xxx.run的那个xxx)必须叫application,而不能叫别的,否则会报错找不到这个实例。
账单
使用初期要经常关注自己的账单,避免因为不了解免费条款而产生费用,虽然一般不会太多,但也可能积小成多(比如某老外收到过一个月10000刀的账单)
某些特殊服务
route53(DNS)和cloudfront(CDN)服务好像要发邮件提供公司注册信息才能使用(AWS注册后就会马上收到一封信,告诉你这个事情,附带联系邮件地址),否则就一直重定向,开通不了。
嫌域名难记?去你的域名服务商开个CNAME,就是一个子域名的别名。不能开A Record。