ディレクトリバケット
Amazon S3 バケットには、汎用バケットとディレクトリバケットの 2 種類があります。アプリケーションとパフォーマンス要件に最適なバケットタイプを選択します。
-
汎用バケット はオリジナルの S3 バケットタイプであり、ほとんどのユースケースやアクセスパターンに推奨されます。汎用バケットでは、S3 Express One Zone 以外のすべてのストレージクラスにオブジェクトを保存することもできます。
-
ディレクトリバケットは、S3 Express One Zone ストレージクラスのみを使用します。アプリケーションがパフォーマンスの影響を受けやすく、1 桁ミリ秒の
PUT
とGET
のレイテンシーから利点が得られる場合にお勧めします。
ディレクトリバケットは一貫して 1 桁ミリ秒のレイテンシーに維持する必要があるワークロードまたはパフォーマンス重視のアプリケーションで使用されます。ディレクトリバケットは、汎用バケットのフラットなストレージ構造とは対照的に、データを階層的にディレクトリにまとめます。ディレクトリバケットにはプレフィックスの制限はなく、個々のディレクトリは水平方向にスケールできます。
ディレクトリバケットは、S3 Express One Zone ストレージクラスを使用します。このストレージクラスでは、単一のアベイラビリティゾーン内の複数のデバイスにわたってデータを保存します。ただし、アベイラビリティゾーン全体でデータを冗長的に保存することはありません。ディレクトリバケットを作成する場合、Amazon EC2、Amazon Elastic Kubernetes Service、または Amazon Elastic Container Service (Amazon ECS) コンピュートインスタンスのローカルにある AWS リージョン とアベイラビリティーゾーンを指定して、パフォーマンスを最適化することをお勧めします。
各 AWS アカウント に最大 10 のディレクトリバケットを作成できます。バケットに保存できるオブジェクトの数に制限はありません。バケット クォータは、AWS アカウント の各リージョンに適用されます。アプリケーションでこの制限を増やす必要がある場合は、AWS Support にお問い合わせください。詳細については、「Service Quotas コンソール
重要
少なくとも 90 日間リクエストアクティビティがないディレクトリバケットは、非アクティブ状態に移行します。非アクティブ状態の場合、ディレクトリバケットは一時的に読み取りと書き込みが利用できなくなります。非アクティブなバケットには、ストレージ、オブジェクトメタデータ、バケットメタデータがすべて保持されます。非アクティブなバケットには既存のストレージ料金が適用されます。非アクティブなバケットへのアクセスをリクエストすると、バケットは通常数分以内にアクティブな状態に移行します。この移行期間中に読み取りと書き込みを行うと HTTP 503 (Service Unavailable)
エラーコードが返されます。
次のトピックでは、ディレクトリバケットについて説明します。汎用バケットの詳細については、「バケットの概要」を参照してください。
トピック
アベイラビリティーゾーン
ディレクトリバケットを作成する際は、バケットの配置場所であるアベイラビリティーゾーンと AWS リージョン を選択します。
ディレクトリバケットは、パフォーマンス重視のアプリケーションで使用されるように構築された S3 Express One Zone ストレージクラスを使用します。S3 Express One Zone は、オブジェクトストレージをコンピューティングリソースと同じ場所に配置するオプションを提供し、単一のアベイラビリティーゾーンを選択できる最初の S3 ストレージクラスです。これにより、アクセス速度が最大限に高速化します。
S3 Express One Zone を使用すると、データは単一のアベイラビリティーゾーン内の複数のデバイスに冗長的に保存されます。S3 Express One Zone は、単一のアベイラビリティーゾーン内で 99.95% の可用性を実現するように設計されており、Amazon S3 サービスレベル契約
ディレクトリバケット名
ディレクトリバケット名は、指定するベース名と、バケットが配置されているアベイラビリティゾーンの ID を含むサフィックスで構成されます。ディレクトリバケット名は次の形式を使用し、ディレクトリバケットの命名規則に従う必要があります。
bucket-base-name
--azid
--x-s3
例えば、次のディレクトリバケット名にはアベイラビリティーゾーン ID usw2-az1
が含まれています。
bucket-base-name
--usw2-az1--x-s3
詳細については、「ディレクトリバケットの命名規則」を参照してください。
ディレクトリ
ディレクトリバケットは、汎用バケットのフラットなストレージ構造とは対照的に、データを階層的にディレクトリにまとめます。各 S3 ディレクトリバケットは、バケット内のディレクトリの数を問わず、1 秒あたり数十万のトランザクション (TPS) をサポートできます。
階層型名前空間では、オブジェクトキーの区切り文字が重要です。ただし、サポートされている唯一の区切り文字はスラッシュ (/
) です。ディレクトリは区切り文字の境界で定義されます。例えば、dir1/dir2/file1.txt
オブジェクトキーを使用すると、ディレクトリ dir1
/ と dir2/
が自動的に作成され、file1.txt
オブジェクトが dir1/dir2/file1.txt
パス内の /dir2
ディレクトリに追加されます。
ディレクトリバケットインデックスモデルは、ListObjectsV2
API オペレーションに対して並べ替えされていない結果を返します。結果をバケットのサブセクションに限定する必要がある場合は、prefix=dir1/
など、prefix
パラメータにサブディレクトリパスを指定できます。
キー名
ディレクトリバケットの場合、複数のオブジェクト キーに共通のサブディレクトリが最初のオブジェクト キーで作成されます。同じサブディレクトリの追加のオブジェクトキーは、以前に作成したサブディレクトリを使用します。このモデルでは、アプリケーションに最適なオブジェクトキーを柔軟に選択でき、疎ディレクトリと密ディレクトリが同等にサポートされます。
アクセス管理
ディレクトリバケットでは、バケットレベルですべての S3 ブロックパブリックアクセス設定がデフォルトで有効になっています。S3 オブジェクト所有者はバケット所有者の強制に設定され、アクセスコントロールリスト (ACL) が無効になっています。上記の設定は変更できません。
デフォルトでは、ユーザーにはディレクトリバケットと S3 Express One Zone オペレーションのためのアクセス許可はありません。ディレクトリバケットへのアクセス権限を付与するには、IAM を使用してユーザー、グループ、またはロールを作成し、それらのアイデンティティにアクセス許可をアタッチします。詳細については、「AWS Identity and Access Management (IAM) for S3 Express One Zone」を参照してください。
ディレクトリバケットの使用
ディレクトリバケットのオペレーションの詳細については、以降のトピックを参照してください。