バケットの作成 - Amazon Simple Storage Service

新しい Amazon S3 ユーザーガイドにようこそ! Amazon S3 ユーザーガイドは、使用中止された 3 つのガイド (Amazon S3 開発者ガイドAmazon S3 コンソールユーザーガイドAmazon S3 入門ガイド) の情報と手順をまとめたものです。

バケットの作成

Amazon S3 にデータをアップロードするときは、いずれかの AWS リージョンに S3 バケットを作成しておく必要があります。バケットを作成するときは、バケット名とリージョンを選択します。必要に応じて、このバケットに他のストレージ管理オプションを選択できます。一度バケットを作成したら、そのバケット名またはリージョンを変更することはできません。バケットの命名についてさらに詳しくは、「バケットの名前付け」を参照してください。

バケットを作成する AWS アカウントは、そのバケットを所有します。バケットにはオブジェクトをいくつでもアップロードできます。デフォルトでは、AWS アカウントにつき最大で 100 個のバケットを作成できます。バケットを追加する必要が場合は、サービスの制限の緩和を申請することによって、アカウントバケットの制限を最大 1,000 バケットまで引き上げることができます。バケットの上限緩和を申請する方法については、AWS 全般のリファレンスの「AWS のサービスのクォータ」を参照してください。バケットには、オブジェクトをいくつでも保存できます。

バケットを作成するときは、Amazon S3 コンソール、Amazon S3 API、AWS CLI、または AWS SDK を使用できます。

  1. AWS マネジメントコンソールにサインインして Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

  2. [バケットを作成する] を選択します。

    [バケットの作成] ウィザードが開きます。

  3. [バケット名] に、バケットの DNS に準拠する名前を入力します。

    バケット名には次の条件があります。

    • すべての Amazon S3 で一意にする。

    • 3~63 文字で指定する。

    • 大文字を含めないでください。

    • 先頭の文字には小文字の英文字または数字を使用する。

    バケットを作成したら、その名前を変更することはできません。バケットの命名についてさらに詳しくは、「バケットの名前付け」を参照してください。

    重要

    バケット名にアカウント番号などの機密情報を含めないでください。バケット名は、バケット内のオブジェクトを参照する URL に表示されます。

  4. [Region (リージョン)] で、バケットを配置する AWS リージョンを選択します。

    レイテンシーとコストを最小化するため、さらに規制条件に対応するために、最寄りのリージョンを選択します。明示的に別のリージョンに移動する場合を除き、特定のリージョンに保管されたオブジェクトは、そのリージョンから移動されることはありません。有効な Amazon S3 AWS リージョンのリストについては、AWS 全般のリファレンスの「AWS サービスエンドポイント」を参照してください。

  5. [Bucket settings for Block Public Access (バケットのパブリックアクセスブロック設定)] で、バケットに適用するパブリックアクセスブロック設定を選択します。

    パブリックウェブサイトをホスティングする場合など、ユースケースでオフにする必要のある設定が 1 つ以上あることがわかっている場合を除き、すべての設定を有効にしておくことをお勧めします。バケットに対して有効にしたパブリックアクセスブロック設定は、バケットに作成するすべてのアクセスポイントに対しても有効になります。パブリックアクセスのブロックの詳細については、「Amazon S3 ストレージへのパブリックアクセスのブロック」を参照してください。

  6. (オプション) S3 オブジェクトロックを有効にする場合は、次の手順に従います。

    1. [詳細設定] を選択し、表示されるメッセージを読みます。

      重要

      バケットに対する S3 オブジェクトロックは、バケットの作成時にのみ有効にできます。バケットに対してオブジェクトロックを有効にした場合、後で無効にすることはできません。バケットに対してオブジェクトロックを有効にすると、バージョニングも有効になります。バケットに対してオブジェクトロックを有効にした後、バケット内のオブジェクトを保護するには、オブジェクトロック設定を定義する必要があります。オブジェクトの保護の設定の詳細については、「S3 オブジェクトロックの使用」を参照してください。

    2. オブジェクトロックを有効にする場合は、テキストボックスに enable と入力し、[確認] を選択します。

    S3 オブジェクトロック機能の詳細については、S3 オブジェクトロックの使用 を参照してください 。

  7. [バケットを作成する] を選択します。

AWS SDK を使用してバケットを作成する場合は、最初にクライアントを作成し、次にそのクライアントを使用してバケットを作成するためのリクエストを送信します。ベストプラクティスとして、クライアントとバケットを同じ AWS リージョンで作成します。クライアントまたはバケットの作成時にリージョンを指定しない場合、Amazon S3 ではデフォルトのリージョンである米国東部 (バージニア北部) が使用されます。

デュアルスタックのエンドポイントにアクセスするためにクライアントを作成するには、AWS リージョンを指定する必要があります。詳細については、「デュアルスタックのエンドポイント」を参照してください。利用可能な AWS リージョンのリストについては、AWS 全般のリファレンスの「リージョンとエンドポイント」を参照してください。

クライアントを作成すると、リージョンはリージョン固有のエンドポイントにマッピングされます。クライアントは、このエンドポイントを使用して Amazon S3 と通信します。s3.<region>.amazonaws.com。リージョンがローンチされたのが 2019 年 3 月 20 日以降である場合は、クライアントとバケットは同じリージョン内にある必要があります。2019 年 3 月 20 日以前にローンチされたリージョンの場合は、米国東部 (バージニア北部) のリージョンでクライアントを使用することによりバケットを作成できます。詳細については、「レガシーエンドポイント」を参照してください。

AWS SDK コード例が、以下のタスクを実行します。

  • AWS リージョンを明示的に指定してクライアントを作成する - この例では、クライアントは s3.us-west-2.amazonaws.com エンドポイントを使用して Amazon S3 と通信します。AWS リージョンは任意のものを指定できます。AWS リージョンのリストについては、AWS 全般のリファレンスの「リージョンとエンドポイント」を参照してください。

  • バケット名のみを指定してバケット作成リクエストを送信する - クライアントが Amazon S3 にリクエストを送信し、クライアントが作成されたリージョンにバケットを作成します。

  • バケットの場所情報を取得する - Amazon S3 が、バケットの場所情報を、そのバケットに関連付けられている場所のサブリソースに保存します。

Java

この例では、AWS SDK for Java を使用して Amazon S3 バケットを作成する方法を示します。作業サンプルを作成およびテストする方法については、「Amazon S3 Java コード例のテスト」を参照してください。

import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.CreateBucketRequest; import com.amazonaws.services.s3.model.GetBucketLocationRequest; import java.io.IOException; public class CreateBucket2 { public static void main(String[] args) throws IOException { Regions clientRegion = Regions.DEFAULT_REGION; String bucketName = "*** Bucket name ***"; try { AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new ProfileCredentialsProvider()) .withRegion(clientRegion) .build(); if (!s3Client.doesBucketExistV2(bucketName)) { // Because the CreateBucketRequest object doesn't specify a region, the // bucket is created in the region specified in the client. s3Client.createBucket(new CreateBucketRequest(bucketName)); // Verify that the bucket was created by retrieving it and checking its location. String bucketLocation = s3Client.getBucketLocation(new GetBucketLocationRequest(bucketName)); System.out.println("Bucket location: " + bucketLocation); } } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it and returned an error response. e.printStackTrace(); } catch (SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client // couldn't parse the response from Amazon S3. e.printStackTrace(); } } }
.NET

有効なサンプルを作成してテストする方法については、「Amazon S3 .NET コード例の実行」を参照してください。

using Amazon; using Amazon.S3; using Amazon.S3.Model; using Amazon.S3.Util; using System; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class CreateBucketTest { private const string bucketName = "*** bucket name ***"; // Specify your bucket region (an example region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 s3Client; public static void Main() { s3Client = new AmazonS3Client(bucketRegion); CreateBucketAsync().Wait(); } static async Task CreateBucketAsync() { try { if (!(await AmazonS3Util.DoesS3BucketExistAsync(s3Client, bucketName))) { var putBucketRequest = new PutBucketRequest { BucketName = bucketName, UseClientRegion = true }; PutBucketResponse putBucketResponse = await s3Client.PutBucketAsync(putBucketRequest); } // Retrieve the bucket location. string bucketLocation = await FindBucketLocationAsync(s3Client); } catch (AmazonS3Exception e) { Console.WriteLine("Error encountered on server. Message:'{0}' when writing an object", e.Message); } catch (Exception e) { Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message); } } static async Task<string> FindBucketLocationAsync(IAmazonS3 client) { string bucketLocation; var request = new GetBucketLocationRequest() { BucketName = bucketName }; GetBucketLocationResponse response = await client.GetBucketLocationAsync(request); bucketLocation = response.Location.ToString(); return bucketLocation; } } }
Ruby

有効なサンプルを作成してテストする方法については、「AWS SDK for Ruby - バージョン 3 の使用」を参照してください。

require 'aws-sdk-s3' # Creates a bucket in Amazon S3. # # @param s3_client [Aws::S3::Client] An initialized Amazon S3 client. # @param bucket_name [String] The bucket's name. # @return [Boolean] true if the bucket was created; otherwise, false. # @example # s3_client = Aws::S3::Client.new(region: 'us-east-1') # exit 1 unless bucket_created?(s3_client, 'doc-example-bucket') def bucket_created?(s3_client, bucket_name) s3_client.create_bucket(bucket: bucket_name) rescue StandardError => e puts "Error while creating the bucket named '#{bucket_name}': #{e.message}" end

AWS コマンドラインインターフェイス (AWS CLI) を使用して S3 バケットを作成することもできます。詳細については、AWS CLI コマンドリファレンスの「 create-bucket 」を参照してください。

AWS CLI の詳細については、AWS コマンドラインインターフェイスユーザーガイドの「What is the AWS Command Line Interface ?」を参照してください。