いまさら聞けないAmazon S3&オブジェクトストレージ:Amazon S3再入門【前編】
クラウドストレージのデファクトスタンダードになりつつあるのが、Amazon S3だ。S3の特徴について、改めて復習してみよう。
長年にわたって共有ストレージのプロトコルはブロックとファイルが独占している。ブロックはその名の通り、LUN(Logical Unit Number)やボリューム上にあるデータのブロックを512バイトという細かい単位で更新する。ファイルはファイルレベルでデータにアクセスする。アクセス時にファイル全体がロックアウトされるが、SMB(Server Message Block)やNFS(Network File System)はサブファイルの更新を許可する場合がある。
ファイルとブロックにはそれぞれ適したデータやアプリケーションがある。ブロックが適しているのはデータベースなどのアプリケーション、ファイルが適しているのは階層構造で保存されたファイルだ。
データ量やクラウドによって、ストレージアクセスの要件はさらに広がっている。デファクトスタンダードになりそうなプロトコルも新たに誕生している。その一つがAmazon Web Services(AWS)の「Amazon Simple Storage Service」(Amazon S3)だ。非常にスケーラブルなパブリッククラウドストレージで、ブロックやファイルではなくオブジェクトを使用する。
オブジェクトは明確なフォーマットを持たないデータの断片だ。ファイル、画像、地震探査データの一部、その他の非構造化コンテンツなどがこれに当たる。オブジェクトストレージはコンテンツを識別するメタデータを付加してデータを格納する。S3も例外ではない。
S3がリリースされたのは2006年。そして現在、S3は数十兆ものオブジェクトを保存している。オブジェクトのサイズは数KBから最大5TBに及び、これらは「バケット」というコレクションに配置される。バケットには管理とセキュリティにマルチテナンシーを提供する役割がある。その外側はフラットな構造になっていて、NFSやCIFS(Common Internet File System)、SMBベースのストレージで見られるディレクトリに相当する階層構造はない。
シンプルなコマンド
S3は一連のシンプルなコマンドでオブジェクトを保存/取得する。新しいオブジェクトを保存するのは「PUT」、取得は「GET」、ストアからの削除は「DELETE」を使用する。更新も「PUT」を使う。
S3では、オブジェクトはユーザーが指定した一意の名前で参照される。この名前はファイル名や無作為の文字列にできる。他のオブジェクトストレージはユーザーがオブジェクト名を指定する機能を提供せず、オブジェクト参照を返す。この点がS3を他のサービスより柔軟で使いやすいものにしている。
S3のアクセスに使用するのは、HTTP(S)を用いるWebベースのプロトコルとREST(Representational State Transfer)ベースのAPIだ。
RESTは、単純だがスケーラブルかつ信頼性の高い方法でWebベースのアプリケーションとの通信を可能にするプロトコルだ。RESTはステートレスなので各要求は一意になり、複雑なWebベースアプリケーションのようにCookieなどを使って追跡する必要がない。
S3はPUT、GET、COPY、DELETE、LISTの各コマンドをHTTP要求としてネイティブにコーディングできる。この場合、HTTP呼び出しヘッダが要求の詳細を示し、呼び出し本体はオブジェクトのコンテンツそのものになる。Java、.NET、PHP、Rubyなどさまざまな言語や実行環境のSDKを使ってアクセスすることも可能だ。
S3のストレージ層
AWSは以下に示す3レベルのストレージ層を提供する。
1.標準
S3の一般的な容量を提供し、S3に追加したデータの通常のエンドポイントとして使われる。
2.標準(低頻度アクセス)
同じくS3の容量を提供するが「標準」よりも可用性が低い。可用性をそこまで求めないデータに適している。
3.Glacier
長期アーカイブ用のストレージを提供する。
各ストレージ層は価格設定が異なる。例えばEU(欧州連合)におけるエントリーレベルの容量は、標準が1GB当たり0.03ドル、標準(低頻度アクセス)が0.0125ドル、Glacierが0.007ドルだ。実行した要求やS3から読み取るデータ量にも課金される。S3への書き込み時はコストがかからない。
後編(Computer Weekly日本語版 6月5日号掲載予定)では、S3のバックグラウンドと使用上の注意点について解説する。
Copyright © ITmedia, Inc. All Rights Reserved.