バケットの作成
Amazon S3 にデータをアップロードするときは、いずれかの AWS リージョン に S3 バケットを作成しておく必要があります。バケットを作成するときは、バケット名とリージョンを選択します。必要に応じて、このバケットに他のストレージ管理オプションを選択できます。一度バケットを作成したら、そのバケット名またはリージョンを変更することはできません。バケットの命名についてさらに詳しくは、「バケットの名前付け」を参照してください。
バケットを作成する AWS アカウント は、そのバケットを所有します。バケットにはオブジェクトをいくつでもアップロードできます。デフォルトでは、AWS アカウント につき最大で 100 個のバケットを作成できます。バケットを追加する必要が場合は、サービスの制限の緩和を申請することによって、アカウントバケットの制限を最大 1,000 バケットまで引き上げることができます。バケットの上限緩和を申請する方法については、AWS 全般のリファレンスの「AWS サービスのクォータ」を参照してください。バケットには、オブジェクトをいくつでも保存できます。
S3 オブジェクト所有権は、Amazon S3 バケットレベルの設定であり、アクセスコントロールリスト (ACL) を無効にし、バケット内のすべてのオブジェクトの所有権を取得できるため、Amazon S3 に保存されているデータのアクセス管理を簡素化できます。別の AWS アカウント がオブジェクトを S3 バケットにアップロードした場合、デフォルトでは、そのオブジェクトの記述者であるアカウントがオブジェクトの所有権とアクセス権を保持し、オブジェクトへのアクセス権を、ACL を介して他のユーザーに対し付与することができます。バケットを作成する際に、Object Ownership のバケットオーナー強制設定を適用してデフォルトの動作を変更すると ACL は無効になり、バケット所有者としてバケット内のすべてのオブジェクトを自動的に所有することになります。その結果、データのアクセス制御はポリシーに基づきます。詳細については、「オブジェクトの所有権の制御とバケットの ACL の無効化。」を参照してください。
2023 年 4 月から、Amazon S3 はすべての新しい S3 バケットの S3 ブロックパブリックアクセスとオブジェクト所有権 (ACL 無効) のデフォルト設定を変更します。この更新後に作成される新しいバケットでは、S3 ブロックパブリックアクセス設定がすべて有効になり、S3 アクセスコントロールリスト (ACL) は無効になります。これらのデフォルトは、Amazon S3 のデータを保護するための推奨ベストプラクティスです。これらの設定は、バケットを作成した後に調整できます。詳細については、「 新しい S3 バケットのデフォルト設定に関するよくある質問」および「AWS News Blog」の「Heads-Up: Amazon S3 Security Changes Are Coming in April of 2023
バケットを作成するときは、Amazon S3 コンソール、Amazon S3 API、AWS CLI、または AWS SDK を使用できます。必要なアクセス権限の詳細については、Amazon Simple Storage Service API リファレンスの CreateBucket を参照してください。
AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/
) を開きます。 -
バケットの作成 を選択します。
[バケットの作成] ウィザードが開きます。
-
[バケット名] に、バケットの DNS に準拠する名前を入力します。
バケット名には次の条件があります。
-
すべての Amazon S3 で一意にする。
-
3~63 文字で指定する。
-
大文字を含めないでください。
-
先頭の文字には小文字の英文字または数字を使用する。
バケットを作成したら、その名前を変更することはできません。バケットの命名についてさらに詳しくは、バケットの名前付け を参照してください。
重要 バケット名にアカウント番号などの機密情報を含めないでください。バケット名は、バケット内のオブジェクトを参照する URL に表示されます。
-
-
[Region] (リージョン) で、バケットを格納する AWS リージョン を選択します。
レイテンシーとコストを最小化するため、さらに規制条件に対応するために、最寄りのリージョンを選択します。明示的に別のリージョンに移動する場合を除き、特定のリージョンに保管されたオブジェクトは、そのリージョンから移動されることはありません。有効な Amazon S3 AWS リージョン のリストについては、アマゾン ウェブ サービスの全般のリファレンスのAWS サービスエンドポイント を参照してください。
-
オブジェクト所有者 で、ACL を無効または有効にし、バケットにアップロードされたオブジェクトの所有権を制御するには、次のいずれかの設定を選択します。
ACL は無効です
-
バケット所有者の強制 - ACL は無効になり、バケット所有者はバケット内のすべてのオブジェクトを自動的に所有し、完全にコントロールできます。ACL は、S3 バケット内のデータに対するアクセス許可に対して影響を与えなくなりました。このバケットはアクセスコントロールを定義するためにポリシーを使用します。
IAM または AWS Organizations ポリシーを使用し、ACL を無効にしてすべての新しいバケットを作成することを要求するには、すべての新しいバケットの ACL を無効にします (バケット所有者の強制) を参照してください。
ACL の有効化
-
希望するバケット所有者 — バケット所有者は、他のアカウントが
bucket-owner-full-control
既定 ACL でバケットに書き込む新しいオブジェクトを所有し、完全にコントロールできます。バケット所有者の優先設定を適用して、すべての Amazon S3 アップロードに
bucket-owner-full-control
既定 ACL を含めることを要求する場合は、この ACL を使用するオブジェクトアップロードのみを許可するバケットポリシーを追加できます。 -
オブジェクトライター — オブジェクトをアップロードする AWS アカウント は、そのオブジェクトを所有し、そのオブジェクトを完全にコントロールし、ACL を介して他のユーザ ーにそのオブジェクトへのアクセス権を付与できます。
注記 バケット所有者の強制 の設定、または バケット所有者の優先 の設定を適用するには、次のアクセス許可が必要です:
s3:CreateBucket
およびs3:PutBucketOwnershipControls
。 -
-
ブロックパブリックアクセスのバケット設定 で、バケットに適用するパブリックアクセスブロック設定を選択します。
パブリックウェブサイトをホスティングする場合など、ユースケースでオフにする必要のある設定が 1 つ以上あることがわかっている場合を除き、すべての設定を有効にしておくことをお勧めします。バケットに対して有効にしたパブリックアクセスブロック設定は、バケットに作成するすべてのアクセスポイントに対しても有効になります。パブリックアクセスのブロックの詳細については、Amazon S3 ストレージへのパブリックアクセスのブロック を参照してください。
-
(オプション) [Bucket Versioning] (バケットのバージョニング) では、オブジェクトのバリアントをバケットに保持するかどうかを選択できます。バージョニングの詳細については、S3 バケットでのバージョニングの使用 を参照してください。
バケットのバージョニングを無効または有効にするには、[Disable] (無効化) または [Enable] (有効化) を選択します。
-
(オプション) [Tags] (タグ) では、バケットにタグを追加することを選択できます。タグは、ストレージの分類に使用されるキーと値のペアです。
バケットタグを追加するには、[Key] (キー) とオプションで [Value] (値) を入力し、[Add Tag] (タグの追加) を入力します。
-
(オプション) [Default encryption] (デフォルトの暗号化) では、Amazon S3 で管理されたキー (SSE-S3) または AWS Key Management Service (AWS KMS) に保存された AWS KMS keys (SSE-KMS) のいずれかで、サーバー側の暗号化を使用するようにバケットを設定することを選択できます。詳細については、「Amazon S3 バケット向けのサーバー側のデフォルトの暗号化動作の設定」を参照してください。
暗号化を有効または無効にするには、[Enable] (有効化) または [Disable] (無効化) を選択します。
-
(オプション) S3 オブジェクトロックを有効にする場合は、次の手順に従います。
-
[詳細設定] を選択します。
重要 バケットに対するオブジェクトロックは、バケットの作成時にのみ有効にでき、後で無効にすることはできません。バケットに対してオブジェクトロックを有効にすると、バージョニングも有効になります。有効にした後、オブジェクトロックのデフォルト保持設定およびリーガルホールド設定を指定し、新しいオブジェクトを削除または上書きしないようにする必要があります。
-
オブジェクトロックを有効にする場合は、[Enable] (有効化) を選択し、表示される警告を読んだうえで承認します。
詳細については、「S3 オブジェクトロックの使用」を参照してください。
注記 オブジェクトロックが有効なバケットを作成するには、
s3:CreateBucket
、s3:PutBucketVersioning
およびs3:PutBucketObjectLockConfiguration
の許可が必要です。 -
-
[バケットを作成する] を選択します。
AWS SDK を使用してバケットを作成する場合は、最初にクライアントを作成し、次にそのクライアントを使用してバケットを作成するためのリクエストを送信します。ベストプラクティスとして、クライアントとバケットを同じ AWS リージョン で作成する必要があります。クライアントまたはバケットの作成時にリージョンを指定しない場合、Amazon S3 ではデフォルトのリージョンである米国東部 (バージニア北部) が使用されます。
デュアルスタックのエンドポイントにアクセスするためにクライアントを作成するには、AWS リージョン を指定する必要があります。詳細については、「デュアルスタックのエンドポイント」を参照してください。利用可能な AWS リージョン の一覧については、AWS 全般のリファレンスの「リージョンとエンドポイント」を参照してください。
クライアントを作成すると、リージョンはリージョン固有のエンドポイントにマッピングされます。クライアントは、このエンドポイントを使用して Amazon S3 と通信します。s3.
。リージョンがローンチされたのが 2019 年 3 月 20 日以降である場合は、クライアントとバケットは同じリージョン内にある必要があります。2019 年 3 月 20 日以前にローンチされたリージョンの場合は、米国東部 (バージニア北部) のリージョンでクライアントを使用することによりバケットを作成できます。詳細については、「レガシーエンドポイント」を参照してください。<region>
.amazonaws.com
AWS SDK コード例が、以下のタスクを実行します。
-
AWS リージョン を明示的に指定してクライアントを作成する - この例では、クライアントは
s3.us-west-2.amazonaws.com
エンドポイントを使用して Amazon S3 と通信します。任意の AWS リージョン を指定できます。AWS リージョン の一覧については、AWS 全般のリファレンスの「リージョンとエンドポイント」を参照してください。 -
バケット名のみを指定してバケット作成リクエストを送信する - クライアントが Amazon S3 にリクエストを送信し、クライアントが作成されたリージョンにバケットを作成します。
-
バケットの場所情報を取得する - Amazon S3 が、バケットの場所情報を、そのバケットに関連付けられている場所のサブリソースに保存します。
また、AWS Command Line Interface(AWS CLI) を使用して、S3 バケットを作成することもできます。詳細については、AWS CLI コマンドリファレンスの「create-bucket
AWS CLI の詳細については、AWS Command Line Interface ユーザーガイドの「AWS Command Line Interface とは」を参照してください。