そんなKey Value Store それは
Amazon S3(Simple Storage Service)
その名前からは、ファイルを置いておくためのストレージという印象の強いサービスで、実際に保存ファイル数は5,660億個(2011年10月現在)にもなります。毎秒のアクセスも約40万回もあると言われています。Amazon Web Servicesが提供するサービスの中でも一番古いサービスになります。(現在のProduct Adevertising API を除く。)
今日はまず、Amazon S3がどんなサービスなのかを追っていきます。その後になぜ私が、このストレージサービスをKeyValueStoreと紹介するのかについて書きます。
AmazonS3の特徴
Amazon S3はシンプルなHTTPのインターフェイスでアクセスができるストレージサービスです。データを分散して保存してくれたり、バージョンを管理してくれたりとストレージとしてはだいぶリッチな機能を持っています。
バケットとオブジェクト
Amazon S3にはバケットとオブジェクトというものでファイルを管理します。
バケットは世界中でユニークな名前が付けられ、このバケット毎に世界6箇所のリージョンと呼ばれる複数のデータセンターの集まりの中からどこに保存するかを選択することができます。
オブジェクトは私達が日頃ファイルと呼んでいるものと同じ意味だと思って大丈夫です。
オブジェクトには最大で2Kバイトまで、任意メタデータやHTTPでアクセスした時にヘッダーとして送出させられる物等がくっつけられます。また、オブジェクト一つ一つには一意にアクセスできるURLが割り当てられます。
Access Control List
ブラウザやcURLなどで単純にHTTPでアクセスできるような権限から、自分自身しか見ることも書くこともできない権限まで設定できます。
権限にはREAD,WRITE,READ_ACP,WRITE_ACP,FULL_CONTROLという5つの権限がありますが、それぞれ
- READ 読み込みができる権限
- WRITE 書き込み(上書き)ができる権限
- READ_ACP ACLがどうなっているのか読み込むことができる権限
- WRITE_ACP ACLを書き換えることができる権限
- FULL_CONTROL 全て可能な権限
となっています。
この他にもバケット毎にアクセス権限を設定する「バケットポリシー」やユーザ毎にアクセス権限を設定する「IAM」、あとで詳しくお話ししますが、有効期限付きでURLさえ知っていればアクセス可能にできる「Query String Authentication」という機能もあります。
制限
ストレージとして細かなアクセス制限などできるのですが、やはり制限もあります。
- 1つのファイルの大きさは1バイトから5Tバイトまで
- HTTPでのみアクセス可能
- 1アカウントに付き作れるバケットは100個
と、制限と言っても気にしなくてはいけない制限はHTTPでしかアクセスできないということくらいで、他はそんなに気になるものではありません。
どうしても大量のデータを出し入れしたいという時にはAmazonに直接HDDを送ってデータを入れてもらったり、出してもらったりするAmazon Import/Exportというサービスもあります。