가용 영역에서 디렉터리 버킷 생성 - 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--zone-id--x-s3

예를 들어, 다음 디렉터리 버킷 이름에는 가용 영역 ID인 usw2-az1이 포함되어 있습니다.

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

디렉터리 버킷 이름 지정 규칙에 대한 자세한 내용은 디렉터리 버킷 이름 지정 규칙 섹션을 참조하세요.

  1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/s3/에서 S3 콘솔을 엽니다.

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

    참고

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

  3. 왼쪽 탐색 창에서 디렉터리 버킷을 선택합니다.

  4. 버킷 만들기를 선택합니다. 버킷 만들기 페이지가 열립니다.

  5. 일반 구성에서 버킷이 생성될 AWS 리전을 확인합니다.

    버킷 유형에서 디렉터리를 선택합니다.

    참고
    • 디렉터리 버킷을 지원하지 않는 리전을 선택한 경우 버킷 유형 옵션이 사라지고 버킷 유형이 범용 버킷으로 기본 설정됩니다. 디렉터리 버킷을 생성하려면 지원되는 리전을 선택해야 합니다. 지원 디렉터리 버킷 및 Amazon S3 Express One Zone 스토리지 클래스를 지원하는 리전 목록은 S3 Express One Zone 가용 영역 및 리전 섹션을 참조하세요.

    • 버킷을 생성한 후에는 버킷 유형을 변경할 수 없습니다.

    참고

    버킷 생성 후에는 가용 영역을 변경할 수 없습니다.

  6. 가용 영역의 경우 컴퓨팅 서비스의 로컬 가용 영역을 선택합니다. 지원 디렉터리 버킷 및 S3 Express One Zone 스토리지 클래스를 지원하는 가용 영역의 목록은 S3 Express One Zone 가용 영역 및 리전 섹션을 참조하세요.

    가용 영역에서 확인란을 선택하여 가용 영역 중단 시 데이터를 사용할 수 없거나 데이터가 손실될 수 있음을 확인합니다.

    중요

    디렉터리 버킷은 단일 가용 영역 내의 여러 디바이스에 걸쳐 저장되지만, 디렉터리 버킷은 가용 영역 간에 데이터를 중복으로 저장하지는 않습니다.

  7. 버킷 이름에서 디렉터리 버킷 이름을 입력합니다.

    디렉터리 버킷에는 다음 이름 지정 규칙이 적용됩니다.

    • 선택한 영역(AWS 가용 영역 또는 AWS 로컬 영역) 내에서 고유해야 합니다.

    • 이름은 최소 3자에서 최대 63자 사이여야 합니다(접미사 포함).

    • 소문자, 숫자, 하이픈(-)으로만 구성해야 합니다.

    • 문자나 숫자로 시작하고 끝나야 합니다.

    • --zone-id--x-s3을 접미사로 포함해야 합니다.

    • 버킷 이름은 접두사 xn--로 시작해서는 안됩니다.

    • 버킷 이름은 접두사 sthree-로 시작해서는 안됩니다.

    • 버킷 이름은 접두사 sthree-configurator로 시작해서는 안됩니다.

    • 버킷 이름은 접두사 amzn-s3-demo-로 시작해서는 안됩니다.

    • 버킷 이름은 접미사 -s3alias로 끝나서는 안됩니다. 이 접미사는 액세스 포인트 별칭 이름 용도로 예약되어 있습니다. 자세한 내용은 범용 버킷의 액세스 포인트 별칭 섹션을 참조하세요.

    • 버킷 이름은 접미사 --ol-s3로 끝나서는 안됩니다. 이 접미사는 객체 Lambda 액세스 포인트 별칭 이름 용도로 예약되어 있습니다. 자세한 내용은 S3 버킷 객체 Lambda 액세스 포인트에 버킷 스타일 별칭을 사용하는 방법 섹션을 참조하세요.

    • 버킷 이름은 접미사 .mrap로 끝나서는 안됩니다. 이 접미사는 다중 리전 액세스 포인트 이름 용도로 예약되어 있습니다. 자세한 내용은 Amazon S3 다중 리전 액세스 포인트 이름 지정 규칙 섹션을 참조하세요.

    콘솔을 사용하여 디렉터리 버킷을 생성하면 제공하는 기본 이름에 접미사가 자동으로 추가됩니다. 이 접미사에는 선택한 가용 영역의 가용 영역 ID가 포함됩니다.

    버킷을 생성한 후에는 해당 이름을 변경할 수 없습니다. 버킷 이름 지정에 대한 자세한 내용은 범용 버킷 이름 지정 규칙 섹션을 참조하십시오.

    중요

    버킷 이름에 계정 번호와 같은 중요한 정보를 포함하지 마세요. 버킷 이름은 버킷의 객체를 가리키는 URL에 표시됩니다.

  8. 객체 소유권에서 버킷 소유자 적용 설정이 자동으로 활성화되고 모든 액세스 제어 목록(ACL)이 비활성화됩니다. 디렉터리 버킷의 경우 ACL을 활성화할 수 없습니다.

    버킷 소유자 적용(기본값) – ACL이 비활성화되고 버킷 소유자는 버킷의 모든 객체를 자동으로 소유하고 완전히 제어합니다. ACL은 더 이상 S3 버킷의 데이터에 대한 권한에 영향을 주지 않습니다. 버킷은 정책을 독점적으로 사용하여 액세스 제어를 정의합니다.

  9. 이 버킷의 퍼블릭 액세스 차단 설정에서 디렉터리 버킷의 퍼블릭 액세스 차단 설정이 자동으로 활성화됩니다. 디렉터리 버킷의 경우 이 설정을 수정할 수 없습니다. 퍼블릭 액세스 차단에 대한 자세한 내용은 Amazon S3 스토리지에 대한 퍼블릭 액세스 차단 섹션을 참조하십시오.

  10. 기본 암호화를 구성하려면 암호화 유형 아래에서 다음 중 하나를 선택합니다.

    • Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3)

    • AWS Key Management Service 키를 사용한 서버 측 암호화(SSE-KMS)

    Amazon S3 서버 측 암호화를 사용하는 데이터 암호화에 대한 자세한 내용은 데이터 보호 및 암호화 섹션을 참조하십시오.

    중요

    기본 암호화 구성에 대해 SSE-KMS 옵션을 사용할 경우 AWS KMS의 초당 요청 수(RPS) 제한이 적용됩니다. AWS KMS 할당량과 할당량 증대를 요청하는 방법에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서의 할당량을 참조하십시오.

    기본 암호화를 활성화할 때 버킷 정책을 업데이트해야 할 수 있습니다. 자세한 내용은 크로스 계정 작업에 SSE-KMS 암호화 사용 섹션을 참조하세요.

  11. Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3)를 선택한 경우 버킷 키 아래에 활성화됨이 나타납니다. SSE-S3를 통한 기본 암호화를 사용하도록 디렉터리 버킷을 구성할 때 S3 버킷 키는 항상 활성화됩니다. S3 버킷 키는 디렉터리 버킷의 GETPUT 작업에 대해 항상 활성화되며 비활성화할 수 없습니다. CopyObject, UploadPartCopy, 배치 운영의 Copy 작업 또는 import 작업을 통해 SSE-KMS로 암호화된 객체를 범용 버킷에서 디렉터리 버킷으로, 디렉터리 버킷에서 범용 버킷으로 또는 디렉터리 버킷 간에 복사하는 경우 S3 버킷 키는 지원되지 않습니다. 이 경우 Amazon S3는 KMS 암호화 개체에 대한 사본 요청이 있을 때마다 AWS KMS를 직접적으로 호출합니다.

    S3 버킷 키를 사용하면 Amazon S3에서 AWS KMS로의 요청 트래픽이 줄어 암호화 비용이 절감됩니다. 자세한 내용은 Amazon S3 버킷 키를 사용하여 SSE-KMS 비용 절감 섹션을 참조하세요.

  12. AWS Key Management Service 키를 사용한 서버 측 암호화(SSE-KMS)를 선택한 경우 AWS KMS 키에서 다음 방법 중 하나로 AWS Key Management Service 키를 지정하거나 새 키를 생성합니다.

    • 사용 가능한 KMS 키 목록에서 중에서 선택하려면 AWS KMS keys에서 선택을 선택하고 사용 가능한 AWS KMS keys에서 KMS 키를 선택합니다.

      고객 관리형 키만 이 목록에 표시됩니다. AWS 관리형 키(aws/s3)는 디렉터리 버킷에서 지원되지 않습니다. 고객 관리형 키에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서의 고객 키 및 AWS 키를 참조하십시오.

    • KMS 키 ARN 또는 별칭을 입력하려면 AWS KMS key ARN 입력을 선택하고 KMS 키 ARN 또는 별칭을 AWS KMS key ARN에 입력합니다.

    • AWS KMS 콘솔에서 고객 관리형 키를 생성하려면 KMS 키 생성을 선택합니다.

      AWS KMS key 생성에 대한 자세한 내용은 AWS Key Management Service 개발자 가이드키 생성을 참조하십시오.

    중요
    • SSE-KMS 구성은 버킷 수명 기간 동안 디렉터리 버킷당 고객 관리형 키 1개만 지원할 수 있습니다. AWS 관리형 키(aws/s3)는 지원되지 않습니다. 또한, SSE-KMS에 고객 관리형 키를 지정한 후에는 버킷의 SSE-KMS 구성을 위한 고객 관리형 키를 재정의할 수 없습니다.

      다음과 같은 방법으로 버킷의 SSE-KMS 구성에 대해 지정한 고객 관리형 키를 식별할 수 있습니다.

      • 응답에서 x-amz-server-side-encryption-aws-kms-key-id의 값을 찾기 위해 HeadObject API 작업을 요청합니다.

      데이터에 새 고객 관리형 키를 사용하려면 최신 고객 관리형 키가 있는 새 디렉터리 버킷에 기존 객체를 복사하는 것이 좋습니다.

    • 버킷과 동일한 AWS 리전에서 사용할 수 있는 KMS 키만 사용 가능합니다. Amazon S3 콘솔은 버킷과 동일한 리전에 있는 처음 100개의 KMS 키만 나열합니다. 목록에 없는 KMS 키를 사용하려면 KMS 키 ARN을 입력해야 합니다. 다른 계정에서 소유한 KMS 키를 사용하려면 먼저 해당 키에 대한 사용 권한이 있어야 하고, 다음 단계로 KMS 키 ARN을 입력해야 합니다. KMS 키의 크로스 계정 권한에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서에서 다른 계정에서 사용할 수 있는 KMS 키 만들기를 참조하십시오. SSE-KMS에 대한 자세한 내용은 디렉터리 버킷의 새 객체 업로드에 AWS KMS(SSE-KMS)를 사용한 서버 측 암호화 지정 섹션을 참조하십시오.

    • 디렉터리 버킷에서 서버 측 암호화에 AWS KMS key를 사용하는 경우 대칭 암호화 KMS 키를 선택해야 합니다. Amazon S3는 대칭 암호화 KMS 키만 지원하며 비대칭 KMS 키는 지원하지 않습니다. 자세한 내용은 AWS Key Management Service 개발자 안내서에서 대칭 및 비대칭 KMS 키 식별을 참조하십시오.

    Amazon S3에서 AWS KMS을(를) 사용하는 방법에 대한 자세한 내용은 디렉터리 버킷에서 AWS KMS 키(SSE-KMS)를 사용한 서버 측 암호화 사용 단원을 참조하십시오.

  13. 버킷 생성을 선택합니다. 버킷을 생성한 후 버킷에 파일 및 폴더를 추가할 수 있습니다. 자세한 내용은 디렉터리 버킷의 객체 작업 섹션을 참조하세요.

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" }} } );
SDK for .NET

이 예시는 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--zone-id--x-s3

aws s3api create-bucket --bucket bucket-base-name--zone-id--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을 참조하세요.