디렉터리 버킷 생성 - Amazon Simple Storage Service

디렉터리 버킷 생성

Amazon S3 Express One Zone 스토리지 클래스 사용을 시작하기 위해 디렉터리 버킷을 생성합니다. S3 Express One Zone 스토리지 클래스는 디렉터리 버킷에만 사용할 수 있습니다. S3 Express One Zone 스토리지 클래스는 지연 시간이 짧은 사용 사례를 지원하고 단일 가용 영역 내에서 더 빠른 데이터 처리를 제공합니다. 애플리케이션이 성능에 민감하고 10밀리초 미만의 PUTGET 지연 시간이 필요한 경우 S3 Express One Zone 스토리지 클래스를 사용할 수 있도록 디렉터리 버킷을 생성하는 것이 좋습니다.

Amazon S3 버킷에는 범용 버킷과 디렉터리 버킷이라는 두 가지 유형이 있습니다. 애플리케이션 및 성능 요구 사항에 가장 적합한 버킷 유형을 선택해야 합니다. 범용 버킷은 S3 버킷 본래의 유형입니다. 범용 버킷은 대부분의 사용 사례와 액세스 패턴에 권장되며 S3 Express One Zone을 제외한 모든 스토리지 클래스에 객체를 저장할 수 있습니다. 범용 버킷에 대한 자세한 내용은 버킷 개요 섹션을 참조하세요.

디렉터리 버킷은 S3 Express One Zone 스토리지 클래스를 사용합니다. S3 Express One Zone 스토리지 클래스는 일관되게 10밀리초 미만의 지연 시간이 필요한 워크로드 또는 성능이 중요한 애플리케이션에 사용하도록 설계되었습니다. 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에 로그인한 후 https://console.aws.amazon.com/s3/에서 Amazon S3 콘솔을 엽니다.

  2. 페이지 상단의 탐색 모음에서 현재 표시된 AWS 리전의 이름을 선택합니다. 그런 다음 버킷을 생성하려는 리전을 선택합니다.

    참고

    지연 시간과 요금을 최소화하고 규제 요건을 충족하려면 가장 가까운 리전을 선택하십시오. 특정 리전에 저장된 객체는 사용자가 명시적으로 객체를 다른 리전으로 전송하지 않는 한 해당 리전을 벗어나지 않습니다. Amazon S3 AWS 리전 목록은 Amazon Web Services 일반 참조의 AWS 서비스 엔드포인트를 참조하십시오.

  3. 왼쪽 탐색 창에서 버킷(Buckets)을 선택합니다.

  4. 버킷 만들기를 선택합니다.

    버킷 만들기 페이지가 열립니다.

  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로 끝나서는 안됩니다. 이 접미사는 객체 Lambda 액세스 포인트 별칭 이름 용도로 예약되어 있습니다. 자세한 내용은 S3 버킷 객체 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을 참조하세요.