2.5 オブジェクトストレージ
オブジェクトストレージは、ファイル単位でデータを格納するデータストアです。HTTP/HTTPS のプロトコルを用いてファイルを出し入れするファイルサーバー的な機能を提供します。仮想マシンインスタンスのゲスト OS からファイルを出し入れするほかに、外部ネットワークから直接にファイルを出し入れすることも可能です。
2.5.1 オブジェクトストレージの基本機能
オブジェクトストレージは、ファイル単位でデータを格納する機能を提供します。格納したファイルの一部を上書きで変更することはできないので、ファイルの内容を書き換える場合は、一度、ファイルを取り出した後、変更したファイルを再格納する必要があります。
このように、提供する機能はとてもシンプルですが、高い可用性と高速なスループットを持つので、動画ファイルや画像ファイルなど、大量のファイルを保存するのに適しています。オブジェクトストレージに格納するファイルのことを「オブジェクト」と呼ぶこともあります。
また、これまでに説明したコンポーネントは、リージョンやアベイラビリティゾーンによって特定の場所や地域にひも付けられていましたが、オブジェクトストレージは、複数の場所や地域から共通に利用することができます。
たとえば、AWS が提供するオブジェクトストレージのサービスである「Amazon S3」では、オブジェクトの保存領域となる「S3 バケット」はリージョンごとに用意されますが、他のリージョンの仮想マシンインスタンスからでも、インターネットを介してアクセスすることが可能です。
あるリージョンの仮想マシンインスタンスからファイルを保存した後、それを他のリージョンの仮想マシンインスタンスから取り出すような使い方が可能になります(図 2.19)。
オブジェクトストレージにファイルを保存する際は、オブジェクトの入れ物となる「コンテナ」を作成します。AWS では、先ほどの「S3 バケット」がコンテナに相当します[※7]。Linux のディレクトリに似ていますが、コンテナの中にコンテナを作成することはできません。ただし、ディレクトリ名付きでファイルを出し入れすることは可能です。
たとえば、ディレクトリ名を付けて「dir01/file01」というファイルを保存すると、内部的には、「dir01/file01」という名称のオブジェクトがコンテナに保存される形になります(図 2.20)。格納したファイルに対するアクセス権の設定は、コンテナの単位で行ないます。
また、それぞれのオブジェクトには、(Key, Value)形式のメタデータを付与することが可能です。アプリケーションと連携して利用する際は、メタデータによって、アプリケーションが取り出すファイルを選択するなどの使い方ができます。
※7 AWS の用語に合わせて、コンテナのことを「バケット」と呼ぶこともあります。
2.5.2 バージョニングと静的 Web ホスティング
バージョニングは、コンテナに保存するオブジェクトにバージョン番号を付与する機能です。同じ名前のファイルを上書き保存した際は、新しいバージョン番号で保存されて、過去のファイルもそのまま残ります。必要な際は、過去のバージョンにファイルの内容を戻すことが可能になります。
また、静的 Web ホスティングは、オブジェクトストレージを簡易的な Web サーバーとして利用する機能です。コンテナのアクセス権をパブリック(だれでも読み出し可能)にセットして、その中に静的 HTML ファイルを保存しておきます。外部のWeb ブラウザから、この保存オブジェクトに割り当てられた URL にアクセスすると、HTML のコンテンツがブラウザに表示されます。HTML ファイルの他にも、画像ファイルを保存して、ブラウザから閲覧することもできます。
2.5.3 仮想ストレージのバックアップ
仮想ストレージのボリュームは、オブジェクトストレージにバックアップすることができます。内部的には、ボリューム全体を一定サイズのブロックに分割して、それぞれのブロックを 1 つのファイルとしてオブジェクトストレージに保存する形になります。
オブジェクトストレージは複数のリージョン/アベイラビリティゾーンから共通に利用できるので、リージョン/アベイラビリティゾーン間でボリュームの内容をコピーする際にも使えます[※8]。コピー元のボリュームの内容をオブジェクトストレージにバックアップしておき、それをコピー先のボリュームにリストアします(図2.21)。
※8 AWS では、仮想ストレージのスナップショットや仮想マシンイメージ(テンプレートイメージ)をリージョン間でコピーする機能も提供されています。