버킷 생성 - Amazon Simple Storage Service

새로운 Amazon S3 사용 설명서에 오신 것을 환영합니다! Amazon S3 사용 설명서에는 사용 중지된 세 가지 설명서(Amazon S3 개발자 안내서, Amazon S3 콘솔 사용 설명서, Amazon S3 시작 안내서)에 나온 정보와 지침이 통합되어 있습니다.

버킷 생성

Amazon S3에 데이터를 업로드하려면 먼저 AWS 리전 중 하나에 Amazon S3 버킷을 생성해야 합니다. 버킷을 생성할 때 버킷 이름과 리전을 선택해야 합니다. 버킷에 대해 다른 스토리지 관리 옵션을 선택할 수도 있습니다. 버킷을 생성한 후에는 버킷 이름 또는 리전을 변경할 수 없습니다. 버킷 이름 지정에 대한 자세한 내용은 버킷 이름 지정 규칙을 참조하십시오.

버킷을 생성하는 AWS 계정이 해당 버킷을 소유합니다. 이 버킷에 원하는 수의 객체를 업로드할 수 있습니다. 기본적으로 AWS 계정 각각에 대해 최대 100개의 버킷을 만들 수 있습니다. 버킷이 더 필요한 경우 서비스 한도 증가를 제출하여 계정버킷 한도 를 최대 1,000개의 버킷 으로 늘릴 수 있습니다. 버킷 한도 증가를 제출하는 방법은 AWS 일반 참조AWS 서비스 한도를 참조하세요. 버킷에 저장할 수 있는 객체 수에는 제한이 없습니다.

Amazon S3 콘솔, Amazon S3 API, AWS CLI 또는 AWS SDK를 사용하여 버킷을 생성할 수 있습니다.

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

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

    버킷 만들기 마법사가 열립니다.

  3. 버킷 이름에 버킷의 DNS 호환 이름을 입력합니다.

    버킷 이름은 다음과 같아야 합니다.

    • 모든 Amazon S3에서 고유해야 합니다.

    • 3~63자 이내여야 합니다.

    • 대문자가 없어야 합니다.

    • 소문자 또는 숫자로 시작해야 합니다.

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

    중요

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

  4. 리전(Region)에서 버킷이 상주할 AWS 리전을 선택합니다.

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

  5. Bucket settings for Block Public Access(퍼블릭 액세스 차단을 위한 버킷 설정)에서 버킷에 적용할 퍼블릭 액세스 차단 설정을 선택합니다.

    퍼블릭 웹 사이트 호스팅과 같은 사용 사례에 대해 하나 이상의 설정을 해제해야 하는 경우가 아니라면 모든 설정을 활성화 상태로 유지하는 것이 좋습니다. 버킷에 퍼블릭 액세스 차단 설정을 활성화하면 버킷에 생성한 모든 액세스 포인트에 대해서도 활성화됩니다. 퍼블릭 액세스 차단에 대한 자세한 내용은 Amazon S3 스토리지에 대한 퍼블릭 액세스 차단 단원을 참조하십시오.

  6. (선택 사항) S3 객체 잠금을 활성화하려면 다음을 수행합니다.

    1. 고급 설정을 선택하고 나타나는 메시지를 읽습니다.

      중요

      버킷을 생성할 때만 S3 객체 잠금을 활성화할 수 있습니다. 버킷에 대해 객체 잠금을 활성화하면 나중에 비활성화할 수 없습니다. 객체 잠금을 활성화하면 버킷의 버전 관리도 활성화됩니다. 버킷에 대해 객체 잠금을 활성화한 후 객체 잠금 설정을 구성해야 버킷의 객체가 보호됩니다. 객체의 보호 구성에 대한 자세한 내용은 S3 객체 잠금 사용 단원을 참조하세요.

    2. 객체 잠금을 활성화하려면 텍스트 상자에 enable을 입력하고 [확인(Confirm)]을 선택합니다.

    S3 객체 잠금 기능에 대한 자세한 내용은 S3 객체 잠금 사용 섹션을 참조하세요.

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

AWS SDK를 사용하여 버킷을 생성하는 경우, 클라이언트를 생성한 다음 이 클라이언트를 사용하여 버킷 생성 요청을 보냅니다. 모범 사례에 따라 클라이언트와 버킷을 동일한 리전에 생성해야 합니다. 클라이언트나 버킷을 생성할 때 리전을 지정하지 않으면 Amazon S3는 기본 리전인 미국 동부(버지니아 북부)를 사용합니다.

클라이언트를 만들어 듀얼 스택 엔드포인트에 액세스하려면 AWS 리전을 지정해야 합니다. 자세한 내용은 듀얼 스택 엔드포인트 섹션을 참조하세요. 사용할 수 있는 AWS 리전 목록은 AWS 일반 참조리전 및 엔드포인트를 참조하세요.

클라이언트를 만들면 리전은 리전별 엔드포인트로 매핑됩니다. 클라이언트는 s3.<region>.amazonaws.com 엔드포인트를 사용하여 Amazon S3와 통신합니다. 2019년 3월 20일 이후에 리전이 시작된 경우 클라이언트와 버킷이 동일한 리전에 있어야 합니다. 다만 미국 동부(버지니아 북부) 리전의 클라이언트를 사용하면 2019년 3월 20일 이전에 시작된 모든 리전에 버킷을 생성할 수 있습니다. 자세한 내용은 레거시 엔드포인트 섹션을 참조하세요.

이 AWS SDK 코드 예제는 다음 작업을 수행합니다.

  • AWS 리전을 명시적으로 지정하여 클라이언트 생성 - 이 예에서 클라이언트는 s3.us-west-2.amazonaws.com 엔드포인트를 사용하여 Amazon S3와 통신합니다. AWS 리전을 지정할 수 있습니다. AWS 리전 목록은 AWS 일반 참조리전 및 엔드포인트를 참조하세요.

  • 버킷 이름만 지정하여 버킷 생성 요청 전송 - 클라이언트는 Amazon S3로 요청을 전송하여 클라이언트가 생성된 리전에 버킷을 생성합니다.

  • 버킷의 위치에 대한 정보 검색 - Amazon S3는 버킷과 연결된 location 하위 리소스에 버킷 위치 정보를 저장합니다.

Java

이 예제에서는 Java용 AWS SDK를 사용하여 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

실제 예제를 작성하여 테스트하는 방법에 대한 자세한 내용은 Ruby용 AWS SDK 사용 - 버전 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 명령줄 인터페이스 사용 설명서AWS 명령줄 인터페이스란 무엇인가요?를 참조하세요.