Amazon S3 でアプリケーションを構築するための一般的な汎用バケットパターン - Amazon Simple Storage Service

Amazon S3 でアプリケーションを構築するための一般的な汎用バケットパターン

Amazon S3 でアプリケーションを構築する場合、一意の汎用バケットを使用して、異なるデータセット間やワークロード間を分離できます。エンドユーザーやさまざまなユーザーグループに提供するアプリケーションを構築する場合は、ベストプラクティスの設計パターンを使用して、Amazon S3 の機能とスケーラビリティを最大限に活用できるアプリケーションを構築します。

重要

予測不可能な汎用バケット名を作成することをお勧めします。バケットを既に作成していない限り、選択したバケット名を使用できるものと見なしてコードを記述しないでください。予測不可能なバケット名を作成する方法の 1 つは、バケット名にグローバル一意識別子 (GUID) を追加することです (例: amzn-s3-demo-bucket-a1b2c3d4-5678-90ab-cdef-EXAMPLE11111)。汎用バケットの命名規則の詳細については、「汎用バケットの命名規則」を参照してください。

マルチテナント汎用バケットパターン

マルチテナントバケットでは、チームまたはワークロードごとに 1 つの汎用バケットを作成します。バケットに保存するオブジェクトを整理するには、一意の S3 プレフィックスを使用します。プレフィックスは、オブジェクトキー名の先頭にある文字列です。プレフィックスには、オブジェクトキー名の最大長 (1,024 バイト) を条件として、任意の長さを指定できます。プレフィックスは、ディレクトリと同様の方法でデータを整理する方法と考えることができます。ただし、プレフィックスはディレクトリではありません。

例えば、都市に関する情報を保存するには、大陸、国、州、または都道府県の順に整理します。通常、これらの名前には句読点が含まれないため、区切り記号としてスラッシュ (/) を使用できます。以下の例では、スラッシュ (/) 区切り文字を使用して、大陸、国、州、または都道府県の順に都市名を整理するために使用しているプレフィックスを示します。

  • 欧州/フランス/ヌーベルアキテーヌ/ボルドー

  • 北米/カナダ/ケベック/モントリオール

  • 北米/米国/ワシントン州/ベルビュー

  • 北米/米国/ワシントン州/シアトル

このパターンは、汎用バケット内に数百の一意のデータセットがある場合に適切にスケールします。プレフィックスを使用すると、これらのデータセットを簡単に整理してグループ化できます。

ただし、マルチテナント汎用バケットパターンの 1 つの潜在的な欠点は、デフォルトのバケット暗号化S3 バージョニングS3 リクエスタ支払いなど、S3 バケットレベルの多くの機能が、プレフィックスレベルではなく、バケットレベルで設定されることです。マルチテナントバケット内のデータセットごとに固有の要件がある場合、S3 バケットレベルの多くの機能をプレフィックスレベルで設定できないと、データセットごとに正しい設定を指定することが難しくなる可能性があります。さらに、マルチテナントバケットでは、特定のプレフィックスに関連付けられたストレージ、リクエスト、データ転送を理解しようとした場合に、コスト配分が複雑になる可能性があります。

使用ごとのバケットパターン

使用ごとのバケットパターンでは、個別のデータセット、エンドユーザー、またはチームごとに汎用バケットを作成します。これらのバケットごとに S3 バケットレベルの機能を設定できるため、このパターンを使用してバケットレベルの一意の設定を行うことができます。例えば、デフォルトのバケット暗号化S3 バージョニングS3 リクエスタ支払いなどの機能を設定する場合、各バケットのデータセットに合わせてカスタマイズできます。個別のデータセット、エンドユーザー、またはチームごとに 1 つのバケットを使用すると、アクセス管理とコスト配分戦略の両方を簡素化することもできます。

この戦略の潜在的な欠点は、数千のバケットを管理する必要があることです。すべての AWS アカウントでは、10,000 個の汎用バケットがデフォルトクォータになっています。クォータ引き上げリクエストを送信することで、アカウントのバケットクォータを増やすことができます。汎用バケットの引き上げをリクエストするには、Service Quotas コンソールにアクセスしてください。

使用ごとのバケットパターンを管理し、インフラストラクチャ管理を簡素化するには、AWS CloudFormation を使用できます。S3 汎用バケットに必要なすべての設定が定義済みであるパターン用のカスタム AWS CloudFormation テンプレートを作成すると、インフラストラクチャへの変更を簡単にデプロイして追跡できます。詳細については、「AWS CloudFormation ユーザーガイド」の「AWS::S3::Bucket」を参照してください。

S3 バケットの設定を定義する AWS CloudFormation テンプレートをアプリケーションに合わせてカスタマイズして作成する方法を示す図。