2011年1月25日 星期二

Amazon Simple Storage Service (Amazon S3) 簡介

Amazon S3 是個網站服務介面,可以在任何時間地點讓網站開發者存取任何大小的資料。


Amazon S3 功能

  • 可以 讀 / 寫 / 刪除 1 byte ~ 5 terabytes 的資料。
  • 資料被存在一個 bucket 裡面,以開發者設計的唯一 key 來取用。
  • 以 latency / minimize cost / address regulatory requirements 來選擇這個 bucket 放置的 Region。目前有這幾個 Regions 可以選擇:US Standard,EU (Ireland),US West (Northern California) 和 Asia Pacific (Singapore) Regions。
  • 資料一旦被建立就不會離開該 Region,除非開發者去移動他。
  • 使用 Authentication mechanisms 來保護資料。資料可以是 public 或 private 的,權限可以授與指定的使用者。
  • 可以透過 Internet-development toolkit 使用 standards-based REST and SOAP介面來操作資料。
  • 可以使用 HTTP 或是 BitTorrent™ protocol interface 來傳送資料。

保護你的資料

Amazon 會存一些 meta data 確保當使用者的資料毀損時得以恢復。
Amazon 更進一步提供 Versioning 的功能,使用者可以取用更改每個版本。

Reduced Redandancy Storage (RRS)

RRS 在 Amazon S3 裡是個新的選項,它提供使用者:
  • 一個經濟並且容易獲得的方案來散播或分享內容。
  • 搭配比較少的 meta data 來存放 "不重要的 / 容易重現的" 資料 (e.g. thumbnails, transcode media, etc.) 以節省開支。
  • 使用的設備比一般的 disc device 更為耐久400 倍。
  • 不製作和 standard Amazon S3 storage 一樣多的備份。

價錢

所謂 Data transfer “in” and “out” 指的是資料進出 Amazon S3 所在的 Region。狀況如下:
  • 同一個 Region 下
    • 在 Amazon S3 內部使用 COPY request 並不需要 Data Transfer 費用。
    • 在 Amazon EC2 和 Amazon S3 之間傳遞資料並不會有 Data Transfer 費用。
  • 不同的 Region 下
    • 在 Amazon S3 之間使用 COPY request 會有 Data Transfer 費用產生。
    • 在 Amazon EC2 和 Amazon S3 之間傳遞資料會被收取兩筆費用,一筆是 Amazon EC2 的 Data Transfer rates,一筆是 Amazon S3 的 Data Transfer rates。
    • 例外:若是在 Amazon EC2 Northern Virginia Region 和 Amazon S3 US Standard Region 之間傳遞資料不用 Data Transfer 費用。
另外,Delete request 不需要費用。

請參考詳細費用說明。

開始使用 Amazon S3

AWS SDK for PHP 請看這裡。

搞定環境請看這裡 。
AWS SDK for PHP 1.2.2 程式庫請看這裡。

有一些手冊可以先看看
Getting Started Guide
Console User Guide
Developer Guide

Buckets

是個存放 objects 的地方,每個 object 都會存在某個 bucket 。舉例來說:有個 object 名稱是 photos/puppy.jpg 存放在 johnsmith 這個 bucket 裡,那麼取用該檔案的 URL 就會是 http://johnsmith.s3.amazonaws.com/photos/puppy.jpg。

使用 bucket 的目的有下列幾點:
  • 組織 Amazon S3 最高階的命名空間並以此來計算儲存的資料量和資料傳輸產生的費用
  • 控制使用權限
  • 製作使用狀況報表的單位
Bucket 命名:
  • 在整個 Amazon S3 裡必須是唯一。在名字前面加上公司名稱也許是個方法。
  • 可以含有小寫英文字,數字,小數點(.),下畫線(_),減號(-)。
  • 必須以數字或英文字母開頭。
  • 長度必須是 3 ~255 個英文字母。
  • 不可以是個網址(例如:265.255.5.4)。
  • 一旦 bucket 產生之後就不能改名字了。它會出現在 URL 上用來指向 object,請謹慎命名。
產生一個 bucket 並不會被收費,只有從 bucket 放入或取出資料時才會有費用產生。

Objects

在 Amazon S3 裏是個基本的儲存實體,包含資料和 meta data。資料部分是不透明的;meta data 部分是一些描述資料,例如:最後修改時間,http表頭資訊 (如 Content-Type)...等等。

它必須被包含在 bucket 裡面並且用一個唯一的 key (name) 來識別。

Folders

只能在 AWS Management Console 裏使用,並沒有提供 Amazon S3 API。你可以在 bucket 裡面使用它來對 objects 分類。每個 folder 對 Amazon S3 而言是個 zero-byte object,名字最後會有個 "/" 符號。舉例來說:假設製作了個 log 這樣的 folder,你會在 AWS Management Console 看到 log/ 這樣的 object。倘若上載了個 history.txt 存放在 log/ 裡面,那麼用來取用 history.txt 的完整 key name 就會是 log/history.txt。

Keys

是在 bucket 裡面用來識別 object 的唯一索引。在 Amazon S3 裡取用 object 的唯一方法就是利用 bucket + key + (optional) version ID 組合成的 URL。舉例來說: http://doc.s3.amazonaws.com/2006-03-01/AmazonS3.wsdl 裡的 doc 是 bucket 的名字,而 2006-03-01/AmazonS3.wsdl 就是 key。

Access Control

有兩種方式來控制 buckets 和 objects:
  • access control lists(ACLs):可以對每個 bucket 或 object 作個別的權限設定。
  • bucket policies:將一群權限設定對應到一群人或一些 buckets。

大量傳送資料

Amazon 提供了 AWS import/export 功能以玆使用。可以用在下列幾個方向:
  • 將資料搬移到雲端
  • 將資料備份到本地
  • 將資料分送到客戶端
  • 放置備份資料
  • 災難復原

----
資料來源請看這裡。

沒有留言:

張貼留言