Amazon Glacier

未分類
繼上一篇 Amazon S3 Programming
由 blackbing 推薦
其實 Amazon 還有一個 Storage 服務叫做 Glacier (冰河)




這就要從頭介紹起了
Amazon 在檔案放置的方面
目前有三個服務

Simple Storage Service (S3)
Reduced Redundancy Storage
Glacier

S3 提供最基礎的檔案放置服務
使用者可以放檔案上去
也可以有一個靜態連結去把檔案下載下來
跟權限控管
S3 提供 99.999999999% 的資料可靠度
Reduced Redundancy Storage 則是 99.99%
所以 Reduced Redundancy Storage 有便宜一點點

不過老實說如果不是很大的量
99.99 跟 99.999999 (很多9) 應該是比較不出來才對

S3 跟 RRS 基本上就是可靠度跟價錢的差異
其他使用上都一樣

只要在建立一個新的 bucket 的時候
指定你要哪種存放的 type 即可

至於 Glacier 就酷了
它一樣提供 99.999999999% 的可靠程度
但是價錢卻只有 S3 的十分之一
但是事情沒有那麼簡單

當你存進去之後
要拿出來(下載)
要等3~5小時(解凍?)
然後才能從S3去存取

Glacier 拿來做例行性備份還真不錯
因為備份這種事情
時間越久遠 就越不重要
會再把一兩年前的備份拿出來的機會真的不高

那要怎麼 programming 呢?

可以參考這個連結
http://aws.amazon.com/articles/PHP/4261

之前 S3 用的 library 有點陽春
以致於它無法設定 bucket 的屬性
要決定 bucket 是以哪一種 type (S3/RRS/Glacier)
是由設定 bucket 屬性來決定的
所以之前那個簡易版的 library 就掰掰囉

Glacier 的設定其實只有差在要設定一個叫做 LifeCycle 的東西
它是一個可以指定資料在某個時間之後
搬移到 Glacier 或是直接刪除的動作



在S3的 Web 操作介面內
只要看某個 bucket 的屬性

裡面有個 Lifycycle 的設定值
當然一開始是空的
這邊我已經用API去設定好了
所以不需要手動設定


API 的介面大概也有這些設定值
只是 php 版本的 array 把這些設定值包裹了很多層
可能是要支援可以同時指定數個設定值的關係
搞了很久才正確的 mapping 到 API 的參數




點Add Rule 或是 Modify 以後
就會看到這個介面
如剛剛所說 有兩個動作可以做
一個是搬移到 Glacier
另一個是 Expiration (過期) 就會把資料刪掉

Enabled 沒勾的話當然就不會生效= =
Name 可以不用填 系統會自行幫你決定(隨便填的亂數值)
Apply to Entire Bucket 會把這個動作套用到這個 Bucket 的所有檔案
Prefix 是你可以設定某個檔案名稱(或是目錄)開頭的檔名
套用這個規則
Time Period 是你可以指定某個天數
或是某個指定的日期 執行你制定的動作
我是設定30天以後搬到 Glacier 去
因為大部分的客人應該不會要30天以前的備份
但是就是放著保險

如果你想馬上看到效果
可以設個一天兩天
(所以我等了三十幾天才看到有檔案搬到 Glacier 去= =)

時間到了
如果你去 Glacier 的 Web 管理介面看
並不會看到你設定的檔案放在檔案介面中
我一開始也以為沒設定好 所以沒生效之類的


而且系統也不會很準時的在你設定的時間去做這件事情
會有一兩天的誤差
目前(撰寫時間) 是 2013-03-23
就算是扣掉時區因素
可以看到 2013-2-20 的備份都還沒搬到 Glacier

如果有看到 Storage Class 變成 Glacier
那恭喜你 設定成功了~
可以省下 9/10 的費用~

那要如何取出資料呢
可以在檔案上面按滑鼠右鍵
會看到這個介面


有個 Initiate Restore 的功能
點下去
就會開始進行解凍的動作
系統會警告你
如果解凍的資料超過 S3 放置檔案大小的 15% 以上
會被另外收取解凍費用

解凍要等 4~5 小時
解凍完成後 會看到 Storage Class
又變回 Reduced Redundancy 或是 S3
然後就可以透過網址下載把資料抓回來

因為解凍的時間長短不一定
所以 Amazon 又提供了另外兩個通知的服務
Amazon Simple Email Service (SES)
Amazon Simple Notification Service (SNS)
也可以透過 API 去設定要付掛 SES/SNS 服務

解凍完成以後
就會送訊息給指定的
Email帳號/HTTP網址/或是手機簡訊
再透過程式接收這些訊息
就可以做全自動化的 Glacier 檔案取出服務

簡單的說
如果都弄好
你就被 Amazon 綁死啦XD
這也是 Amazon 全面性雲端服務的優勢跟厲害的地方

比起種花電信跟一些台灣業者
只有租些現成的主機服務
要強太多了