ディレクトリバケットの作成 - Amazon Simple Storage Service

ディレクトリバケットの作成

Amazon S3 Express One Zone ストレージクラスの使用を開始するには、ディレクトリバケットを使用する必要があります。S3 Express One Zone ストレージクラスを使用するには、ディレクトリバケットを使用する必要があります。S3 Express One Zone ストレージ クラスは、低レイテンシーのユースケースをサポートし、単一のアベイラビリティーゾーン内でより高速なデータ処理を提供します。アプリケーションのパフォーマンスが重視され、1 桁のミリ秒単位の PUTGET のレイテンシーでの利点が得られる場合は、S3 Express One Zone ストレージクラスを使用できるようにディレクトリバケットを作成することをお勧めします。

Amazon S3 バケットには、汎用バケットとディレクトリバケットの 2 種類があります。アプリケーションとパフォーマンス要件に最適なバケットタイプを選択する必要があります。汎用バケットはオリジナルの S3 バケットタイプです。汎用バケットはほとんどのユースケースとアクセスパターンに推奨されます。S3 Express One Zone を除くすべてのストレージクラスにわたってオブジェクトを保存できます。汎用バケットの詳細については、「バケットの概要」を参照してください。

ディレクトリバケットは、S3 Express One Zone ストレージクラスを使用します。これは、一貫して 1 桁ミリ秒のレイテンシーに維持する必要があるワークロードまたはパフォーマンス重視のアプリケーション向けに設計されています。S3 Express One Zone は、オブジェクトストレージをコンピューティングリソースと同じ場所に配置するオプションを提供し、単一のアベイラビリティーゾーンを選択できる最初の S3 ストレージクラスです。これにより、アクセス速度が最大限に高速化します。ディレクトリバケットを作成する場合、必要に応じて Amazon EC2、Amazon Elastic Kubernetes Service、または Amazon Elastic Container Service (Amazon ECS) コンピュートインスタンスのローカルにある AWS リージョン とアベイラビリティーゾーンを指定して、パフォーマンスを最適化できます。

S3 Express One Zone では、データは単一のアベイラビリティーゾーン内で冗長的に複数のデバイスに保存されます。S3 Express One Zone は、単一のアベイラビリティーゾーン内で 99.95% の可用性を実現するように設計されており、Amazon S3 サービスレベル契約に基づいています。詳細については、「単一のアベイラビリティーゾーン」を参照してください。

ディレクトリバケットは、汎用バケットのフラットなストレージ構造とは対照的に、データを階層的にディレクトリにまとめます。ディレクトリバケットにはプレフィックスの制限はなく、個々のディレクトリは水平方向にスケールできます。

汎用バケットの詳細については、「ディレクトリバケットの概要」を参照してください。

ディレクトリバケット名

ディレクトリバケット名は次の形式を使用し、ディレクトリバケットの命名規則に従う必要があります。

bucket-base-name--azid--x-s3

例えば、次のディレクトリバケット名にはアベイラビリティーゾーン ID usw2-az1 が含まれています。

bucket-base-name--usw2-az1--x-s3

ディレクトリバケットの命名規則の詳細については、「ディレクトリバケットの命名規則」を参照してください。

  1. AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

  2. ページ上部にあるナビゲーションバーで、現在表示されている AWS リージョン の名前をクリックします。次に、バケットを作成するリージョンを選択します。

    注記

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

  3. 左側のナビゲーションペインで、[バケット] を選択します。

  4. [Create bucket (バケットの作成)] を選択します。

    [バケットの作成] ページが開きます。

  5. [全般設定] で、バケットが作成される AWS リージョン を確認します。

  6. [バケットタイプ][ディレクトリ] を選択します。

    注記
    • ディレクトリバケットをサポートしていないリージョンを選択した場合、[バケットタイプ] オプションは表示されなくなり、バケットタイプはデフォルトで汎用バケットになります。ディレクトリバケットを作成するには、サポートされているリージョンを選択する必要があります。ディレクトリバケットと Amazon S3 Express One Zone ストレージクラスをサポートするリージョンのリストについては、「S3 Express One Zone のアベイラビリティーゾーンとリージョン」を参照してください。

    • バケット作成後にバケットタイプは変更できません。

    [アベイラビリティーゾーン] では、コンピューティングサービスにローカルなアベイラビリティーゾーンを選択します。ディレクトリバケットと S3 Express One Zone ストレージクラスをサポートするアベイラビリティーゾーンのリストについては、「S3 Express One Zone のアベイラビリティーゾーンとリージョン」を参照してください。

    注記

    このアベイラビリティーゾーンは、バケットの作成後に変更することはできません。

  7. [アベイラビリティーゾーン] でチェックボックスをオンにして、アベイラビリティーゾーンに障害が発生した場合に、データが使用できなくなったり、データが失われたりする場合があることに同意します。

    重要

    ディレクトリバケットは、単一のアベイラビリティーゾーン内の複数のデバイスに保存されますが、ディレクトリバケットはアベイラビリティーゾーン間でデータを冗長に保存することはありません。

  8. [バケット名] には、ディレクトリバケット名を入力します。

    ディレクトリバケットの命名には、次のルールが適用されます。

    • 選択した AWS リージョン とアベイラビリティーゾーン内では一意であること。

    • 名前は、サフィックスを含め 3 文字 (最短) から 63 文字 (最長) の長さでなければなりません。

    • 小文字の英文字、数字、およびハイフン (-) で構成されていること。

    • 文字や数字で始まり、文字や数字で終わります。

    • --azid--x-s3 のサフィックスを含める必要があります。

    • バケット名のプレフィックスは xn-- で始まってはいけません。

    • バケット名のプレフィックスは sthree- で始まってはいけません。

    • バケット名のプレフィックスは sthree-configurator で始まってはいけません。

    • バケット名のプレフィックスは amzn-s3-demo- で始まってはいけません。

    • バケット名のサフィックスは -s3alias で終わってはいけません。このサフィックスは、アクセスポイントのエイリアス名用に予約されています。詳細については、「S3 バケットアクセスポイントでのバケット形式のエイリアスの使用」を参照してください。

    • バケット名のサフィックスは --ol-s3 で終わってはいけません。このサフィックスは、Object Lambda アクセスポイントのエイリアス名用に予約されています。詳細については、「S3 バケット Object Lambda アクセスポイントでのバケット形式のエイリアスの使用方法」を参照してください。

    • バケット名のサフィックスは .mrap で終わってはいけません。このサフィックスは、マルチリージョンアクセスポイント名用に予約されています。詳細については、「Amazon S3 マルチリージョンアクセスポイントの命名規則」を参照してください。

    コンソールを使用してディレクトリバケットを作成すると、指定したベース名にサフィックスが自動的に追加されます。このサフィックスには、選択したアベイラビリティーゾーンのアベイラビリティーゾーン ID が含まれます。

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

    重要

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

  9. [オブジェクト所有者] で、[バケット所有者の強制] の設定が自動的に有効になり、アクセスコントロールリスト (ACL) が無効になります。ディレクトリバケットの場合、ACL は有効にできません。

    ACL は無効です
    • バケット所有者強制 (デフォルト) – ACL は無効になり、バケット所有者はバケット内のすべてのオブジェクトを自動的に所有し、完全に制御します。ACL は、S3 バケット内のデータに対するアクセス許可に対して影響を与えません。このバケットはアクセスコントロールを定義するためだけにポリシーを使用します。

      Amazon S3 の最新のユースケースの大部分では ACL を使用する必要がなくなっています。詳細については、「オブジェクトの所有権の制御とバケットの ACL の無効化。」を参照してください。

  10. [このバケットのブロックパブリックアクセス設定] で、ディレクトリバケットのパブリックアクセスブロック設定がすべて自動的に有効になります。ディレクトリバケットの場合、この設定は変更できません。ブロックパブリックアクセスの詳細については、Amazon S3 ストレージへのパブリックアクセスのブロック を参照してください。

  11. [サーバー側の暗号化設定] では、ディレクトリバケットは Amazon S3 マネージドキーによるサーバー側の暗号化 (SSE-S3) を使用してデータを暗号化します。

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

    バケットを作成したら、ファイルやフォルダをバケットに追加できます。詳細については、「ディレクトリバケットでのオブジェクトの使用」を参照してください。

SDK for Go

AWS SDK for Go を使用してディレクトリバケットを作成する方法は、次の例のとおりです。

var bucket = "..." func runCreateBucket(c *s3.Client) { resp, err := c.CreateBucket(context.Background(), &s3.CreateBucketInput{ Bucket: &bucket, CreateBucketConfiguration: &types.CreateBucketConfiguration{ Location: &types.LocationInfo{ Name: aws.String("usw2-az1"), Type: types.LocationTypeAvailabilityZone, }, Bucket: &types.BucketInfo{ DataRedundancy: types.DataRedundancySingleAvailabilityZone, Type: types.BucketTypeDirectory, }, }, }) var terr *types.BucketAlreadyOwnedByYou if errors.As(err, &terr) { fmt.Printf("BucketAlreadyOwnedByYou: %s\n", aws.ToString(terr.Message)) fmt.Printf("noop...\n") return } if err != nil { log.Fatal(err) } fmt.Printf("bucket created at %s\n", aws.ToString(resp.Location)) }
SDK for Java 2.x

AWS SDK for Java 2.x を使用してディレクトリバケットを作成する方法は、次の例のとおりです。

public static void createBucket(S3Client s3Client, String bucketName) { //Bucket name format is {base-bucket-name}--{az-id}--x-s3 //example: doc-example-bucket--usw2-az1--x-s3 is a valid name for a directory bucket created in //Region us-west-2, Availability Zone 2 CreateBucketConfiguration bucketConfiguration = CreateBucketConfiguration.builder() .location(LocationInfo.builder() .type(LocationType.AVAILABILITY_ZONE) .name("usw2-az1").build()) //this must match the Region and Availability Zone in your bucket name .bucket(BucketInfo.builder() .type(BucketType.DIRECTORY) .dataRedundancy(DataRedundancy.SINGLE_AVAILABILITY_ZONE) .build()).build(); try { CreateBucketRequest bucketRequest = CreateBucketRequest.builder().bucket(bucketName).createBucketConfiguration(bucketConfiguration).build(); CreateBucketResponse response = s3Client.createBucket(bucketRequest); System.out.println(response); } catch (S3Exception e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }
AWS SDK for JavaScript

AWS SDK for JavaScript を使用してディレクトリバケットを作成する方法は、次の例のとおりです。

// file.mjs, run with Node.js v16 or higher // To use with the preview build, place this in a folder // inside the preview build directory, such as /aws-sdk-js-v3/workspace/ import { S3 } from "@aws-sdk/client-s3"; const region = "us-east-1"; const zone = "use1-az4"; const suffix = `${zone}--x-s3`; const s3 = new S3({ region }); const bucketName = `...--${suffix}`; const createResponse = await s3.createBucket( { Bucket: bucketName, CreateBucketConfiguration: {Location: {Type: "AvailabilityZone", Name: zone}, Bucket: { Type: "Directory", DataRedundancy: "SingleAvailabilityZone" }} } );
AWS SDK for .NET

AWS SDK for .NET を使用してディレクトリバケットを作成する方法は、次の例のとおりです。

using (var amazonS3Client = new AmazonS3Client()) { var putBucketResponse = await amazonS3Client.PutBucketAsync(new PutBucketRequest { BucketName = "DOC-EXAMPLE-BUCKET--usw2-az1--x-s3", PutBucketConfiguration = new PutBucketConfiguration { BucketInfo = new BucketInfo { DataRedundancy = DataRedundancy.SingleAvailabilityZone, Type = BucketType.Directory }, Location = new LocationInfo { Name = "usw2-az1", Type = LocationType.AvailabilityZone } } }).ConfigureAwait(false); }
SDK for PHP

AWS SDK for PHP を使用してディレクトリバケットを作成する方法は、次の例のとおりです。

require 'vendor/autoload.php'; $s3Client = new S3Client([ 'region' => 'us-east-1', ]); $result = $s3Client->createBucket([ 'Bucket' => 'doc-example-bucket--use1-az4--x-s3', 'CreateBucketConfiguration' => [ 'Location' => ['Name'=> 'use1-az4', 'Type'=> 'AvailabilityZone'], 'Bucket' => ["DataRedundancy" => "SingleAvailabilityZone" ,"Type" => "Directory"] ], ]);
SDK for Python

AWS SDK for Python (Boto3) を使用してディレクトリバケットを作成する方法は、次の例のとおりです。

import logging import boto3 from botocore.exceptions import ClientError def create_bucket(s3_client, bucket_name, availability_zone): ''' Create a directory bucket in a specified Availability Zone :param s3_client: boto3 S3 client :param bucket_name: Bucket to create; for example, 'doc-example-bucket--usw2-az1--x-s3' :param availability_zone: String; Availability Zone ID to create the bucket in, for example, 'usw2-az1' :return: True if bucket is created, else False ''' try: bucket_config = { 'Location': { 'Type': 'AvailabilityZone', 'Name': availability_zone }, 'Bucket': { 'Type': 'Directory', 'DataRedundancy': 'SingleAvailabilityZone' } } s3_client.create_bucket( Bucket = bucket_name, CreateBucketConfiguration = bucket_config ) except ClientError as e: logging.error(e) return False return True if __name__ == '__main__': bucket_name = 'BUCKET_NAME' region = 'us-west-2' availability_zone = 'usw2-az1' s3_client = boto3.client('s3', region_name = region) create_bucket(s3_client, bucket_name, availability_zone)
SDK for Ruby

AWS SDK for Ruby を使用してディレクトリバケットを作成する方法は、次の例のとおりです。

s3 = Aws::S3::Client.new(region:'us-west-2') s3.create_bucket( bucket: "bucket_base_name--az_id--x-s3", create_bucket_configuration: { location: { name: 'usw2-az1', type: 'AvailabilityZone' }, bucket: { data_redundancy: 'SingleAvailabilityZone', type: 'Directory' } } )

AWS CLI を使用してディレクトリバケットを作成する方法は、次の例のとおりです。このコマンドを使用する際は、ユーザー入力用プレースホルダーを独自の情報に置き換えます。

ディレクトリバケットを作成する際は、設定の詳細を指定して、bucket-base-name--azid--x-s3 の命名規則を使用する必要があります。

aws s3api create-bucket --bucket bucket-base-name--azid--x-s3 --create-bucket-configuration 'Location={Type=AvailabilityZone,Name=usw2-az1},Bucket={DataRedundancy=SingleAvailabilityZone,Type=Directory}' --region us-west-2

詳細については、「AWS Command Line Interface」の「create-bucket」を参照してください。