用語辞典・クラウド・開発運用

オブジェクトストレージ

オブジェクトストレージとは

object storage(オブジェクト・ストレージ)は、ファイルをオブジェクトとして識別子とメタデータ付きで保存するクラウド向けストレージです。オブジェクトはデータペイロード、システム・利用者メタデータ、バケット内で識別する鍵を組み合わせ、HTTP APIやSDKから操作します。

ブロック機器のセクターを読む保存領域や、ディレクトリー・ファイルハンドルを持つファイルシステムとはインターフェースが違います。大量の画像、動画、バックアップ、ログ、静的資産、データレイク等へ向きますが、低遅延の同じ位置へのランダム書き込みを行うデータベースディスクの直接代替ではありません。

コンソールにフォルダーが見えても、多くのオブジェクト保存では鍵プレフィックスをフォルダーのように表示しています。名前変更やディレクトリー移動が、オブジェクトの複製・削除として実行される場合があります。

データ・メタデータ・鍵を一オブジェクトとしてバケットへ置き、HTTP APIから取得するブロック・ファイルとの差、マルチパート、チェックサム、バージョン・ライフサイクル・複製・アクセスを分ける
データペイロード、メタデータタグ、一意鍵の三部分が一オブジェクトを作り、コンピューター・スマートフォンからHTTP APIゲートウェイ経由でバケットへアップロード・ダウンロードされ、ブロックストレージの固定ブロック、ファイルストレージのフォルダー木構造、オブジェクトストレージのフラットな鍵を比較し、マルチパート組み立て、チェックサム、バージョン管理、ライフサイクル移行とexpiry、別位置複製、識別情報方針、暗号化鍵、期限付きアクセス、オブジェクト全体の置換を示すピクトグラム図解
図1API、整合性モデル、最大サイズ、メタデータ、バージョン管理、複製の詳細は事業者ごとに違います。「オブジェクトストレージ一般」と特定サービスの数値を混ぜません。

オブジェクトの構成

Payload保存するバイト列

画像、アーカイブ、バックアップ、ログ等のコンテンツで、オブジェクト全体としてアップロード・ダウンロードします。

Keyバケット内の識別子

オブジェクトを取得する名前です。プレフィックスをフォルダーのように見せても階層ディレクトリーとは限りません。

Metadataコンテンツの属性

大きさ、コンテンツタイプ、チェックサム、暗号化、利用者定義タグ等をデータへ関連付けます。

Bucketオブジェクトの管理境界

名前空間、地域、方針、バージョン管理、ライフサイクル、ログ記録等の単位になります。

APIHTTP要求で操作

PUT・GET・HEAD・DELETE・LIST等、サービスのオブジェクトAPI・SDKからアクセスします。

Version同じ鍵の世代

バージョン管理有効時は上書き・削除前のバージョンを保持し、復旧や保持期間に使います。

ブロック・ファイル・オブジェクトを分ける

ブロックストレージはOSへ仮想ディスクのブロックを提供し、その上にファイルシステムやデータベースを置きます。ファイルストレージはディレクトリー、ファイル、権限、ファイルを開く・位置を移して読む・ロックする、といったファイル操作を提供します。

オブジェクトストレージは、鍵を指定してオブジェクト全体を取得・保存するAPIが中心です。マウントツールでファイルシステムのように見せても、名前変更、追記、ロック、権限、遅延、整合性の仕様がPOSIXファイルシステムと同じとは限りません。

鍵とプレフィックス

鍵はバケット内で一オブジェクトを識別します。スラッシュを含む鍵をコンソールがフォルダーとしてグループ化しても、実体はフラットな名前空間のプレフィックスであるサービスがあります。

プレフィックス設計は一覧性能、アクセス方針、ライフサイクル、分割へ影響します。パス正規化、大文字・小文字の区別、Unicode、URLエンコーディング、予約済み文字をクライアント間で統一します。

メタデータとタグ

システムメタデータには大きさ、最終更新日時、コンテンツタイプ、ETag、暗号化等、利用者メタデータにはアプリケーション固有のキーと値を持てます。タグは索引・方針・課金分類に使えるサービスがあります。

メタデータの一部変更がオブジェクト全体の複製・置き換えになるサービスもあります。メタデータのサイズ上限、大文字・小文字の扱い、エンコーディング、複製時の継承を確認します。メタデータへパスワードや個人情報を無制限に入れてはいけません。

オブジェクト全体の操作と同時更新

大きなオブジェクトの一部分だけを、普通のファイルのようにその場で上書きできず、新しいオブジェクトへの置き換えや複数部分の合成として扱う設計が一般的です。範囲GETで一部を読めても、その場での部分書き込みとは別です。

同じ鍵へ同時にPUTすると、「最後に受け付けた書き込みを採用する」などの規則で競合します。ETag・世代番号・バージョンを条件にした要求で更新の取りこぼしを防ぎます。詳しい整合性モデルはサービス文書を確認します。

マルチパートアップロード

大オブジェクトを部分へ分け、並列・再送可能にアップロードし、完了操作で一オブジェクトへ組み立てます。失敗部分だけ再送でき、回線利用を効率化できます。

完了操作の前に送った各部分は、通常のオブジェクトとしては読めません。中止されないまま残った不完全アップロードがストレージ費用を生む場合があるため、アップロードID、部分順、チェックサム、未完了データを削除するライフサイクル規則を管理します。

チェックサムとETag

アップロード時に対応するチェックサムを渡し、サーバー側計算と比較すれば転送破損を検出できます。ダウンロード後も期待するチェックサムと照合します。

ETagが常にコンテンツのMD5とは限りません。マルチパートアップロード、暗号化、事業者実装で意味が変わるため、仕様で明示されたチェックサムフィールドを使います。チェックサム一致は配布元の本人性を証明しないためデジタル署名とは別です。

バージョン管理と削除

バージョン管理を有効にすると同じ鍵の複数バージョンを保持し、上書きや誤削除から復旧できます。削除マーカーを現行バージョンとして追加するサービスでは、通常のGETで見えなくなっても旧バージョンが残ります。

バージョンは保存領域コストを消費し、管理者が永久削除できる場合があります。ライフサイクルで旧バージョンを管理し、Object Lock・変更不能化、MFA削除等の保護をリスクに合わせます。

ライフサイクルとストレージクラス

作成後の経過日数、プレフィックス、タグなどを条件に低コストのストレージクラスへ移し、一定期間後に削除できます。アーカイブクラスは復元に時間と費用がかかる場合があるため、オンラインデータと同じ応答時間を期待してはいけません。

法令上の保持期間、バックアップ方針、リーガルホールドより短いライフサイクルを設定しないよう、規則の変更をレビュー・監査します。

複製と耐久性

地域のオブジェクトストレージが内部で複数機器・ゾーンへ冗長化しても、別地域複製、バージョン管理、ランサムウェア対策、アカウント分離まで自動とは限りません。複製適用範囲と遅延を確認します。

耐久性はデータを失わない設計目標、可用性は要求へ応答できる割合です。高耐久性でも一時アクセス不能や権限不一致は起こります。

アクセス方針・暗号化・一時的なURL

バケット方針、識別情報役割、オブジェクトACL等が重なるサービスでは、パブリックアクセスを意図せず許可しないよう一元的な公開ブロックと方針分析を使います。最小権限の特権で一覧・読み取り・書き込み・削除・方針変更を分けます。

サーバー側暗号化、利用者管理鍵、クライアント側暗号化で、鍵を使う地点とメタデータ可視性が違います。署名付きURL等の一時的なアクセスは期限内認証情報として扱い、ログ・リファラー・チャットへ漏らしません。

オブジェクトストレージはデータ・メタデータ・鍵をバケットへ置き、HTTP APIでオブジェクト単位に扱う保存領域です。プレフィックスとディレクトリー、ETagとチェックサム、バージョンとバックアップ、耐久性と可用性を分け、アクセス・ライフサイクル・複製を明示設定します。

objectのkey・value・version・metadata、bucketとconsistency:Amazon S3 objects overview、multipartとchecksum:Amazon S3 multipart upload

関連用語