

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 버킷 생성, 나열, 삭제
<a name="examples-s3-buckets"></a>

Amazon Simple Storage Service(Amazon S3)의 모든 *객체* 또는 파일은 객체 폴더를 나타내는 *버킷*에 포함됩니다. 각 버킷에는 AWS 내에서 전역적으로 고유한 이름이 있습니다. 자세한 내용은 Amazon Simple Storage Service 사용 설명서에서 [Amazon S3 버킷을 사용한 작업](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html)을 참조하세요.

## 사전 조건
<a name="codeExamplePrereq"></a>

시작하기 전에 [AWS SDK for C\$1\$1 사용 시작하기](getting-started.md)를 읽어보시기 바랍니다.

예제 코드를 다운로드하고 [코드 예제 시작하기](getting-started-code-examples.md)에 설명된 대로 솔루션을 빌드합니다.

예제를 실행하려면 코드가 요청을 수행하는 데 사용하는 사용자 프로필이 AWS에서 적절한 권한(서비스 및 동작에 대한)을 보유하고 있어야 합니다. 자세한 내용은 [AWS 자격 증명 제공](credentials.md)을 참조하세요.

## 버킷 나열
<a name="list-buckets"></a>

`list_buckets` 예제를 실행하려면 명령 프롬프트에서 빌드 시스템이 빌드 실행 파일을 생성하는 폴더로 이동합니다. `run_list_buckets`과 같은 실행 파일을 실행합니다. 전체 실행 파일 이름은 운영 체제에 따라 다릅니다. 출력에는 계정 버킷이 있는 경우 해당 버킷 목록이 표시되며, 버킷이 없는 경우에는 빈 목록이 표시됩니다.

`list_buckets.cpp`에는 두 가지 메서드가 있습니다.
+ `main()` - `ListBuckets()`를 호출합니다.
+ `ListBuckets()` - SDK를 사용하여 버킷을 쿼리합니다.

`S3Client` 객체는 SDK의 `ListBuckets()` 메서드를 호출합니다. 성공하면 메서드는 `ListBucketResult` 객체가 포함된 `ListBucketOutcome` 객체를 반환합니다. `ListBucketResult` 객체는 `GetBuckets()` 메서드를 호출하여 계정의 각 Amazon S3 버킷에 대한 정보가 포함된 `Bucket` 객체 목록을 가져옵니다.

 **코드** 

```
bool AwsDoc::S3::listBuckets(const Aws::S3::S3ClientConfiguration &clientConfig) {
    Aws::S3::S3Client client(clientConfig);

    auto outcome = client.ListBuckets();

    bool result = true;
    if (!outcome.IsSuccess()) {
        std::cerr << "Failed with error: " << outcome.GetError() << std::endl;
        result = false;
    } else {
        std::cout << "Found " << outcome.GetResult().GetBuckets().size() << " buckets\n";
        for (auto &&b: outcome.GetResult().GetBuckets()) {
            std::cout << b.GetName() << std::endl;
        }
    }

    return result;
}
```

전체 [list\$1buckets 예제](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/s3/list_buckets.cpp)는 Github에서 확인하세요.

## 버킷 생성
<a name="create-bucket"></a>



`create_bucket` 예제를 실행하려면 명령 프롬프트에서 빌드 시스템이 빌드 실행 파일을 생성하는 폴더로 이동합니다. `run_create_bucket`과 같은 실행 파일을 실행합니다. 전체 실행 파일 이름은 운영 체제에 따라 다릅니다. 이 코드는 계정 아래에 빈 버킷을 생성한 다음 요청의 성공 또는 실패를 표시합니다.

`create_bucket.cpp`에는 두 가지 메서드가 있습니다.
+ `main()` - `CreateBucket()`를 호출합니다. `main()`에서는 `enum`를 사용하여 AWS 리전을 계정의 리전으로 변경해야 합니다. [AWS Management Console](https://console.aws.amazon.com/)에 로그인한 후 오른쪽 상단 모서리에서 리전을 찾으면 본인 계정의 리전을 확인할 수 있습니다.
+ `CreateBucket()` - SDK를 사용하여 버킷을 생성합니다.



`S3Client` 객체는 SDK의 `CreateBucket()` 메서드를 호출하여 버킷 이름과 함께 `CreateBucketRequest`를 전달합니다. 기본적으로 버킷은 *us-east-1*(북부 버지니아) 리전에 생성됩니다. 리전이 *us-east-1*이 아닌 경우 코드는 버킷이 해당 리전에 생성되도록 보장하기 위해 버킷 제약 조건을 설정합니다.

 **코드** 

```
bool AwsDoc::S3::createBucket(const Aws::String &bucketName,
                              const Aws::S3::S3ClientConfiguration &clientConfig) {
    Aws::S3::S3Client client(clientConfig);
    Aws::S3::Model::CreateBucketRequest request;
    request.SetBucket(bucketName);

    if (clientConfig.region != "us-east-1") {
        Aws::S3::Model::CreateBucketConfiguration createBucketConfig;
        createBucketConfig.SetLocationConstraint(
                Aws::S3::Model::BucketLocationConstraintMapper::GetBucketLocationConstraintForName(
                        clientConfig.region));
        request.SetCreateBucketConfiguration(createBucketConfig);
    }

    Aws::S3::Model::CreateBucketOutcome outcome = client.CreateBucket(request);
    if (!outcome.IsSuccess()) {
        auto err = outcome.GetError();
        std::cerr << "Error: createBucket: " <<
                  err.GetExceptionName() << ": " << err.GetMessage() << std::endl;
    } else {
        std::cout << "Created bucket " << bucketName <<
                  " in the specified AWS Region." << std::endl;
    }

    return outcome.IsSuccess();
}
```

전체 [create\$1buckets 예제](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/s3/create_bucket.cpp)는 Github에서 확인하세요.

## 버킷 삭제
<a name="delete-bucket"></a>



`delete_bucket` 예제를 실행하려면 명령 프롬프트에서 빌드 시스템이 빌드 실행 파일을 생성하는 폴더로 이동합니다. `run_delete_bucket`과 같은 실행 파일을 실행합니다. 전체 실행 파일 이름은 운영 체제에 따라 다릅니다. 코드는 계정에 지정된 버킷을 삭제한 다음 요청의 성공 또는 실패를 표시합니다.

`delete_bucket.cpp`에는 두 가지 메서드가 있습니다.
+ `main()` - `DeleteBucket()`를 호출합니다. `main()`에서는 `enum`를 사용하여 AWS 리전을 계정의 리전으로 변경해야 합니다. 또한 `bucket_name`을 삭제할 버킷의 이름으로 변경해야 합니다.
+ `DeleteBucket()` - SDK를 사용하여 버킷을 삭제합니다.



`S3Client` 객체는 SDK의 `DeleteBucket()` 메서드를 사용하여 삭제할 버킷 이름과 함께 `DeleteBucketRequest` 객체를 전달합니다. 성공하려면 버킷이 비어 있어야 합니다.

 **코드**

```
bool AwsDoc::S3::deleteBucket(const Aws::String &bucketName,
                              const Aws::S3::S3ClientConfiguration &clientConfig) {

    Aws::S3::S3Client client(clientConfig);

    Aws::S3::Model::DeleteBucketRequest request;
    request.SetBucket(bucketName);

    Aws::S3::Model::DeleteBucketOutcome outcome =
            client.DeleteBucket(request);

    if (!outcome.IsSuccess()) {
        const Aws::S3::S3Error &err = outcome.GetError();
        std::cerr << "Error: deleteBucket: " <<
                  err.GetExceptionName() << ": " << err.GetMessage() << std::endl;
    } else {
        std::cout << "The bucket was deleted" << std::endl;
    }

    return outcome.IsSuccess();
}
```

전체 [delete\$1bucket 예제](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/s3/delete_bucket.cpp)는 Github에서 확인하세요.