Study hard and make progress every day!

2018-03-16
订阅RDS事件

关于RDS状态的监控,除了常规的CloudWatch Metric以外。RDS还有一个事件机制,能够将RDS的事件通知到SNS。

RDS Event简介

RDS Event - Source type

RDS的事件类型分为如下六大类:

  • 数据库实例(DB instance)
  • 数据库集群(DB cluster)
  • 数据库快照(DB snapshot)
  • 数据库集群快照(DB cluster snapshot)
  • 数据库安全组(DB security group)
  • 数据库参数组(DB parameter group)
阅读此文

2018-03-15
在Chrome中设置Google搜索为NoCountryRedirect

添加代理来科学上网时,使用Google进行搜索,Chrome浏览器默认会重定向到代理国所在的Google域名。比如https://www.google.co.kr/,https://www.google.co.jp/等, 已经在www.google.com登录的Google账号就还得重登, 极度烦躁。

下面是几个固定使用www.google.com来进行搜索的方法

阅读此文

2018-03-14
AWS RDS recovery due to issue with underlying hardware

早上刚上班就收到一封主题为”RDS Notification Message”的订阅邮件,message内容为”Recovery of the DB instance has started. Recovery time will vary with the amount of data to be recovered”。

上Web Console查看发生了什么事,发现RDS已经自我恢复完毕了。最新的Event消息提示为”Recovery of the DB instance is complete.”

rds_recovery_event

提了Case询问了下,也在网上搜了一下,基本搞清楚了是怎么个回事,记录如下。

阅读此文

2018-03-12
EC2底层硬件Retirement的处理方法

AWS的EC2的实例是在物理机上虚拟化出来的,当承载EC2的物理机出现问题或者要退役时,AWS会发送一封主题为**[Retirement Notification] Amazon EC2 Instance scheduled for retirement**的email到AWS Account的注册邮箱中。

以前多次收到过这类邮件,但提示的目标instance-ID都是AutoScaling中运行的EC2,而AutoScaling中的Instance自动伸缩不会影响业务,因此也从没有主动去处理过。

这次突然收到通知邮件,说一台运行后台任务的Instance的underlying hardware hosting出问题了。在此记录一下相关的现象和解决方法。

阅读此文

2018-02-11
使用seed将csv格式的db文件导入DB

一段将csv格式的db文件导入对应表结构的代码。

前提要求

  1. csv文件名字和Model Class需要一一对应, 比如用户表users, Model中定义是class User < ActiveRecord::Base, 那么csv文件名字得是user.csv
  2. csv文件需要有header,并且header名字需要同数据库中对应表的字段名相同
阅读此文

2018-02-11
使用AWS CLI来备份和恢复S3 Bucket的ACL

S3 Bucket层面的权限管理,推荐使用Bucket Policy来管理,但可能会有一些遗留的S3 Bucket, 还使用着Bucket ACL来进行权限管理。

在将Bucket ACl升级为Bucket Policy或者是更新Bucket ACL的时候,会有备份Bucket ACL的需求。此处介绍一下如何使用AWS CLI来备份和恢复Bucket的Bucket ACL。

备份 Bucket ACL

使用CLI中s3api中的get-bucket-acl命令来保存bucket acl。

用法

1
2
3
4
  get-bucket-acl
--bucket <value>
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]
阅读此文

2018-02-09
Macos下如何实现grep的非贪婪模式

有时候需要使用正则的非贪婪模式(non-greedy或者叫lazy模式)来搜一些内容,但Macos系统自带的grep无法胜任。
Mac下的grep是BSD系的,不能使用-P参数来使用perl模式。Linux下的GNU grep就可以使用-P参数来支持非贪婪模式。

MacOS自带的grep的示例:

1
2
3
4
5
6
7
8
9
10
$ cat grep_on_macos.txt
carl has a nice car. the car has four wheels.
$
# 支持普通正则
$ grep -o "car.*has" grep_on_macos.txt
carl has a nice car. the car has
$
# 不支持带?的非贪婪模式
$ grep -o "car.*?has" grep_on_macos.txt
$

此处记录两个可行的方法来解决该问题

阅读此文

2018-02-07
AWS Certified Solutions Architect - Professional Road Map

Official AWS Certification Page

访问官网AWS Certification

  • 参加 AWS 培训课程
  • 查看考试指南和样题
    • 了解考试涉及的概念并整体了解需要学习哪些内容, AWS Certified Solutions Architect – Professional 考试指南 相当于考试大纲, 必看,而且需要反复的看。因为学习过一阵后再来看Guide,会有更深的体会。
    • 考试样题用于熟悉题目题型。几个样题都是大段大段的文字,实际考试题目中也有字数少的题目。但题目的阅读量绝对是比Asoocaiated的大得多。
  • 练习试验
    • 注册一个AWS全球账号,使用一年的免费额度结合Blueprint中的各个内容进行试验。
  • 学习 AWS 白皮书
    • 白皮书是纯英文的,每个白皮书篇幅都很长。
    • 在BluePrint的描述中,和AWS Certified Solutions Architect - Associate的白皮书列表相比,多了Defining Fault Tolerant Applications in the AWS Cloud这一份白皮书,官网找了一下,只有一个名字类似的名为Building Fault-Tolerant Applications on AWS的白皮书,时间还是October 2011的。不管怎样,但愿好理念永不过时,还是整个念一遍吧。
  • 查看 AWS 常见问题
    • 官网推荐的FAQ都建议看完。
  • 参加模拟考试
    • 40美刀一次。是否值得因人而异。参加Professional的考试,肯定都已经经历过AWS Certified Solutions Architect – Associate的洗礼了, 因此熟悉考试界面肯定不是决定要参加模拟考试的目的。一个合理的理由是,可以提前熟悉一下Professional考题阅读难度, 为正式考试的时候做好心理准备。网上都说AWS Certified Solutions Architect – Professional这个考试最大的难度就是要在170分钟内阅读,理解77~80道字数不算少的题,然后选出最优的答案。网上一些母语是英语的老外都感慨阅读量比较大,何况是我们这种非英语系的国家的考生了。
  • 报名考试并获得认证
阅读此文

2017-12-26
A Simple ELB Access Log Parser By Ruby

工作时候,偶尔会有手动检查ELB Access Log的时候,下载下来的access log是空格隔开的,人眼将数值对应到字段名非常累。

就顺手写了个Ruby的小程序来解析access log的内容,转换到csv格式。再使用Excel打开csv文件来进行查看。

用途

读取access log日志,转换为csv。

主要用于临时检查小数据量access log来定位问题。如果是基于access log来进行数据分析,还是需要结合RedShift来进行。

阅读此文

2017-12-25
shell gist to get http 5XX code from ELB access log

一个简陋的只是够用的shell小脚本,用来从S3中下载前一天的ELB access log,筛选出http code为5XX的日志,然后发送给某个指定的email地址。

变量设置

设置下MAIL_TO和S3_BASE_PREFIX这两个变量,然后在有AWS CLI访问环境的机器上执行即可。

  • MAIL_TO 如果有多个地址,可用空格隔开
  • S3_BASE_PREFIX设置到Access log日志格式之前的prefix就行。

比如完整的access log地址是: s3://carl-elb-logs/AWSLogs/888888888888/elasticloadbalancing/ap-northeast-2/2017/12/24/704017765382_elasticloadbalancing_ap-northeast-2_ELB-carl_20171224T0120Z_13.125.86.136_5s9i5ef2.log

那么S3_BASE_PREFIX设置为s3://carl-elb-logs/AWSLogs/888888888888/elasticloadbalancing/ap-northeast-2即可

阅读此文