

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# バケットの作成、一覧表示、削除
<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` には 2 つの方法があります。
+ `main()` が `ListBuckets()` を呼び出す。
+ `ListBuckets()` が SDK を使用してバケットをクエリする。

`S3Client` オブジェクトは SDK の `ListBuckets()` メソッドを呼び出します。成功すると、このメソッドは `ListBucketOutcome` オブジェクトを返します。このオブジェクトには `ListBucketResult` オブジェクトが含まれています。`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;
}
```

GitHub で完全な [list\$1buckets の例](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/s3/list_buckets.cpp)を参照してください。

## バケットを作成する
<a name="create-bucket"></a>



`create_bucket` の例を実行するには、コマンドプロンプトで、ビルドシステムによる実行可能ファイルの作成先フォルダに移動します。実行可能ファイルを `run_create_bucket` のように実行します (完全な実行可能ファイル名はオペレーティングシステムによって異なります)。このコードはアカウントに空のバケットを作成し、そのリクエストの成功または失敗を表示します。

`create_bucket.cpp` には 2 つの方法があります。
+ `main()` が `CreateBucket()` を呼び出す。`main()` で、`enum` を使用して、アカウントのリージョンに応じて AWS リージョン を変更する必要があります。アカウントのリージョンを確認するには、[AWS マネジメントコンソール](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();
}
```

GitHub で完全な [create\$1buckets の例](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/s3/create_bucket.cpp)を参照してください。

## バケットを削除する
<a name="delete-bucket"></a>



`delete_bucket` の例を実行するには、コマンドプロンプトで、ビルドシステムによる実行可能ファイルの作成先フォルダに移動します。実行可能ファイルを `run_delete_bucket` のように実行します (完全な実行可能ファイル名はオペレーティングシステムによって異なります)。このコードは、アカウント内の指定されたバケットを削除し、リクエストの成功または失敗を表示します。

`delete_bucket.cpp` には 2 つの方法があります。
+ `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();
}
```

GitHub で完全な [delete\$1bucket の例](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/s3/delete_bucket.cpp)を参照してください。