AWS 對外頻寬與 CloudFront 頻寬降價

AWS 在「AWS Data Transfer Price Reduction」這邊宣佈降價,回朔至 2014 年 12 月 1 日開始計算。

分成一般 Outbound 與 CloudFront Outbound 部份。

一般 Outbound 的部份,US/EU 主要降價的部份是一開始的流量 (10TB 以下的部份),亞洲區的部份主要是新加坡降價特別多,大概是把量養出來了?

CloudFront Outbound 的部份主要也是在 10TB 以下的部份。

另外一個比較特別的地方 (但也許沒有太大差異),是 CloudFront 往 origin 抓資料時,如果 origin 在 AWS network 內就不計算費用 (包括了 S3EC2)。

如果暫時先不考慮 per request 費用,會注意到 US/EU 一般 Outbound 的費用是 USD$0.90/GB,而 CloudFront 是 USD$0.85/GB,量更大的時候會更明顯?

馬上想到 Netflix 這種單一 request 會有巨大流量的用法會隨著這次計費方式改變而有變化?

Amazon S3 的 Event Notification

在「New Event Notifications for Amazon S3」這邊提到的重點:

The bucket owner (or others, as permitted by an IAM policy) can now arrange for notifications to be issued to Amazon Simple Queue Service (SQS) or Amazon Simple Notification Service (SNS) when a new object is added to the bucket or an existing object is overwritten.

也就是說,S3 上有變動時會透過 SQS 觸發後續行為。由於這是 AWS 自己提供的功能,解決了以往「上傳檔案後自己觸發 SQS」不能保證 atomic 的問題。

好像馬上就想到某個專案可以用到...

EMR 對 S3 Consistency 的補強

今年一月的時候,Netflix 曾經寫過一篇關於對 S3 的 Eventually Consistency 的問題:「Netflix 對 S3 的 Eventually Consistency 的補強...」,當時 Netflix 的作法是實做 s3mper 以確保一致性。

過了半年,AWS 的人在 EMR 上實做了類似的功能:「Consistent View for Elastic MapReduce's File System」。

看文章的說明,應該是用到 DynamoDB 負責 S3 上資料的狀態,而 DynamoDB 的資料並不會砍掉,所以在使用時要注意這點 :o

水樹奈奈的官方網站放到 Route53 + S3 + CloudFront 上...

剛剛才意外發現的,是 Route53 + S3 + CloudFront 的組合:

;; ANSWER SECTION:
www.mizukinana.jp.      60      IN      A       54.239.176.113
www.mizukinana.jp.      60      IN      A       54.239.176.150
www.mizukinana.jp.      60      IN      A       54.230.214.85
www.mizukinana.jp.      60      IN      A       54.230.214.89
www.mizukinana.jp.      60      IN      A       54.230.215.52
www.mizukinana.jp.      60      IN      A       54.230.215.91
www.mizukinana.jp.      60      IN      A       54.230.215.156
www.mizukinana.jp.      60      IN      A       54.239.176.88

這些 IP 是台灣的 CloudFront 節點。從 whois 可以看到至少是三月就這樣了?

Domain Information:
[Domain Name]                   MIZUKINANA.JP

[Registrant]                    Most Company Co., Ltd.

[Name Server]                   ns-290.awsdns-36.com
[Name Server]                   ns-1966.awsdns-53.co.uk
[Name Server]                   ns-1265.awsdns-30.org
[Name Server]                   ns-579.awsdns-08.net
[Signing Key]                   

[Created on]                    2005/09/13
[Expires on]                    2014/09/30
[Status]                        Active
[Last Updated]                  2014/03/28 12:36:18 (JST)

Netcraft 上沒有記錄到什麼時候換的:「Site report for www.mizukinana.jp」。

不過 archive.org 上可以看到改版的記錄,應該是 migration 的時候順變換過去的?看 2014/02/10 版本以及 2014/05/18 版本的差異,連結從 mizukinana.jp 變成了 www.mizukinana.jp

所以應該是三月改的?

意外的先進... XD

用 Amazon S3 送 301 重導

參考「Configure a Bucket for Website Hosting」這邊的說明就可以了,拿 test-redirect.abpe.org 當範例,先是 CNAMES3 的 website endpoint 上:(這個 bucket 我是放在 us-west-2 上,所以會指到 us-west-2 的 website endpoint)

;; ANSWER SECTION:
test-redirect.abpe.org. 7200    IN      CNAME   test-redirect.abpe.org.s3-website-us-west-2.amazonaws.com.

然後 S3 上指定 redirect rule:

  <RoutingRules>
    <RoutingRule>
    <Condition>
      <KeyPrefixEquals>img/</KeyPrefixEquals>
    </Condition>
    <Redirect>
      <HostName>www.example.com</HostName>
      <ReplaceKeyPrefixWith>img/</ReplaceKeyPrefixWith>
    </Redirect>
    </RoutingRule>
  </RoutingRules>

也就是像是這樣:

也就是說,如果是 simple redirect 的話,可以善用 S3 的這個功能而不用自己架設 web server (自己架設需要另外考慮 High Availability),還算蠻方便的?

AWS 跨區域搬大量資料的方式

AWS 跨區域搬資料有一堆方式,而官方今天在 blog 上推薦了用 Tsunami UDP 搬移的方式:「Moving Big Data into the Cloud with Tsunami UDP」。

看文章上的說明,看起來是從 Tokyo 搬到 Virginia (還是反過來?),有很穩定的 651Mbps 在傳輸 XD

看起來之後用的到,這個方法留起來參考...

AWS 大降價

在「AWS Price Reduction #42 - EC2, S3, RDS, ElastiCache, and Elastic MapReduce」這邊看到 AWS 降價的消息,明顯是被 Google 壓著推出來 :p

降價的範圍包括 EC2 instance、EC2 的 reserved instance、S3,以及對應的 RDSElastiCacheElastic MapReduce

前幾天買了兩台 us-west-2 c1.xlarge 的三年 RI,結果從 USD$2804 降到 USD$2524,現虧 USD$280 (XDDD),而每小時單價從 USD$0.124 降到 USD$0.112,也就 9.7% 左右。

另外 S3 的部份則是直接從 USD$0.085/GB 一次殺到 USD$0.03/GB 了,隨著使用量的增加的 discount 差不多都消失了。

等下再來研究好了,計畫永遠趕不上變化...

Google Drive 的降價...

前幾天的大消息:「Save more with Google Drive」。

本來是 USD$0.05/GB,這次 100GB 這邊降到 USD$0.02/GB,而 1TB 以上的方案變成是 USD$0.01/GB。

USD$0.01/GB 是 Amazon Glacier 等級的價錢,但不像 Amazon Glacier 是離線資料,取用時需要等三個小時...

在 S3 上儲存大量資料時要注意的事情

印象中要在 Amazon S3 上面存大量資料時需要注意 key 的命名,用 Google 找了找發現官方的「Request Rate and Performance Considerations」這篇。

文章中有提到這是對有大量存取需求時才需要注意的事項:

The guidelines in this section apply if you are routinely processing 100 or more requests per second. If your typical workload involves only occasional bursts of 100 requests per second or more, you don't need to follow the guidelines in this section.

不過平常即使沒有需要大量存取,還是可以照著做,因為應該不會有負面影響。如果能照著上面的方式先做,之後也許會受益...

由於 Amazon S3 是使用 key-prefix 當作 partition 的依據,所以 prefix 的值對於效能很重要。官方推薦的幾種方法都是對 key-prefix 下手:

  • 對整個 path + filename 的字串 hash 後當作 prefix。舉例來說,examplebucket/2013-26-05-15-00-00/cust1234234/photo1.jpg hash 後加到前面,名稱變成 examplebucket/232a-2013-26-05-15-00-00/cust1234234/photo1.jpg
  • 將最前面一段 reverse string。像是把 2134857/data/start.png 變成 7584312/data/start.png