S3のバケット・オブジェクト・キー

バケット命名、オブジェクト構成、プレフィックスとキー、URL、マルチパート、Transfer Accelerationの制約を試験向けに整理します。

学習順Step 36 / 203サービスStorage試験ドメイン弾力性

オブジェクトストレージとしての位置づけ

S3 は HTTP API で操作する オブジェクトストレージ です。OS がブロックデバイスとしてマウントする EBS とは役割が異なり、バケット に キー 付きでオブジェクトを格納します。複数 AZ に冗長化された設計が前提で、ウェブ静的コンテンツ、ログ、アーカイブ、データレイク に広く使われます。

バケット

  • リージョンを指定して作成。データはそのリージョンに置かれる。
  • 名前はグローバルに一意(パーティション内の全アカウントで重複不可)。削除されるまで他アカウントが同名を使えない場合がある、という説明が出ます。
  • 命名規則(試験でそのまま出る) … おおむね 3〜63 文字、小文字・数字・ドット・ハイフン、IP アドレス形式は不可、先頭末尾は文字または数字 など。公式のルール一覧を参照。

Transfer Acceleration との関係

Transfer Acceleration を有効にするバケットでは、バケット名にドット(.)を含めない などの追加制約がある、という問題が出ます。

オブジェクトの構成要素

オブジェクトはざっくり次で構成されます。

  • キー … バケット内での論理パス。一意の識別子。
  • 値(ボディ) … 実データ。
  • メタデータ … ユーザー/システムメタデータ。
  • バージョン ID … バージョニング有効時。
  • ACL(任意) … レガシーな共有表現。新規は バケットポリシー+IAM が推奨されがち。

プレフィックスと「フォルダの誤解」

コンソール上の photos/2024/cat.jpg は フォルダ階層ではなく、キー文字列です。プレフィックス(photos/2024/)で一覧やライフサイクル、S3 Inventory の単位として論理分割します。プレフィックスごとにスループットが分散しやすい、というパフォーマンスの話は別トピック。

オブジェクト URL

アクセスには REST エンドポイント、静的ウェブサイトエンドポイント、CloudFront、S3 アクセスポイント など、用途に応じた URL が使われます。HTTPS 終端や OAC は CloudFront の文脈でセットで問われます。

サイズとマルチパート

  • 単一 PUT にはサイズ上限があり、大きなファイルはマルチパートアップロードが標準。
  • マルチパートは 並列アップロードと 失敗パートの再送に強い。完了していないアップロードはストレージを占有しうるため、ライフサイクルで不完全マルチパートを掃除する、というのが試験の定番です。

スケールの前提

バケットあたりのオブジェクト数・総容量は実質無制限に近いスケールを前提にしています。アプリ側は 429/503 のスロットリングに備えて指数バックオフやキー分散を行います(パフォーマンストピック)。

既存トピックとの関係

ストレージ同士の比較は S3, EBS, EFS。クラス別の料金・特性は S3ストレージクラス。暗号化・権限はセキュリティ系トピックへ。

公式ドキュメント(深掘り)

重要ポイント

  • ▸バケット名は3〜63文字・小文字数字ハイフンドット・グローバル一意
  • ▸フォルダは存在せずキー文字列のプレフィックスで論理整理
  • ▸単一オブジェクトは大容量まで。マルチパートで分割アップロード
  • ▸Transfer Acceleration利用時はバケット名にドットを含めない等の制約あり
  • ▸静的WebサイトエンドポイントとRESTエンドポイントは用途が異なる

このトピックの学習を完了しますか?

完了状態はいつでも切り替えられます