

 AWS SDK for Java 1.x は 2025 年 12 月 31 日にend-of-supportしました。新しい機能、可用性の向上、セキュリティ更新のために、[AWS SDK for Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/home.html) に移行することをお勧めします。

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

# Amazon S3 バケットの作成、一覧表示、削除
<a name="examples-s3-buckets"></a>

Amazon S3 の各オブジェクト (ファイル) は、オブジェクトのコレクション (コンテナ) を表す*バケット*内に存在している必要があります。各バケットは*キー* (名前) で識別され、それは一意である必要があります。バケットおよびその設定についての詳細は、Amazon Simple Storage Service ユーザーガイドの [Amazon S3 バケットの使用](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html)を参照してください。

**注記**  
ベストプラクティス  
[ バケットで ](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlifecycle.html)AbortIncompleteMultipartUploadAmazon S3 ライフサイクルルールを有効にすることをお勧めします。  
このルールは、開始後、指定された日数内に完了しないマルチパートアップロードを中止するよう Amazon S3 に指示できます。設定した時間制限を超えると、Amazon S3 はアップロードを中止して、不完全なアップロードデータを削除します。  
詳細については、Amazon S3 ユーザーガイドの[バージョニングを使用したバケットのライフサイクル設定](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-configuration-bucket-with-versioning.html)を参照してください。

**注記**  
これらのコード例では、ユーザーが [AWS SDK for Java の使用](basics.md)の内容を理解し、[開発用の AWS 認証情報とリージョンのセットアップ](setup-credentials.md)の情報を使用してデフォルトの AWS 認証情報を設定していることを前提としています。

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

AmazonS3 クライアントの `createBucket` メソッドを使用します。新しい[バケットが](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/model/Bucket.html)返されます。`createBucket` メソッドでは、バケットが既に存在する場合、例外が発生します。

**注記**  
同じ名前のバケットを作成する前にバケットが既に存在するかどうかを確認するには、`doesBucketExist` メソッドを呼び出してください。バケットが存在する場合は `true` を返し、それ以外の場合は `false` を返します。

 **インポート** 

```
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.AmazonS3Exception;
import com.amazonaws.services.s3.model.Bucket;

import java.util.List;
```

 **Code** 

```
if (s3.doesBucketExistV2(bucket_name)) {
    System.out.format("Bucket %s already exists.\n", bucket_name);
    b = getBucket(bucket_name);
} else {
    try {
        b = s3.createBucket(bucket_name);
    } catch (AmazonS3Exception e) {
        System.err.println(e.getErrorMessage());
    }
}
return b;
```

[GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/CreateBucket.java) で完全な例をご覧ください。

## バケットの一覧表示
<a name="list-buckets"></a>

AmazonS3 クライアントの `listBucket` メソッドを使用します。成功すると、[バケット](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/model/Bucket.html)のリストが返されます。

 **インポート** 

```
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.Bucket;

import java.util.List;
```

 **Code** 

```
List<Bucket> buckets = s3.listBuckets();
System.out.println("Your {S3} buckets are:");
for (Bucket b : buckets) {
    System.out.println("* " + b.getName());
}
```

[GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/ListBuckets.java) で完全な例をご覧ください。

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

Amazon S3 バケットを削除する前に、バケットが空であることを必ず確認してください。空になっていないとエラーが発生します。[バージョニングされたバケット](https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html)がある場合は、このバケットに関連付けられているすべてのバージョニングされたオブジェクトも削除する必要があります。

**注記**  
[完全な例](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java)には、これらの各ステップが順に含まれており、Amazon S3 バケットとそのコンテンツを削除するための完全なソリューションを提供しています。

**Topics**
+ [バケットを削除する前にバージョニングされていないバケットからオブジェクトを削除する](#remove-objects-from-an-unversioned-bucket-before-deleting-it)
+ [バケットを削除する前にバージョニングされているバケットからオブジェクトを削除する](#remove-objects-from-a-versioned-bucket-before-deleting-it)
+ [空のバケットを削除する](#delete-an-empty-bucket)

### バケットを削除する前にバージョニングされていないバケットからオブジェクトを削除する
<a name="remove-objects-from-an-unversioned-bucket-before-deleting-it"></a>

AmazonS3 クライアントの `listObjects` メソッドを使用してオブジェクトのリストおよび `deleteObject` を取得し、それぞれを削除します。

 **インポート** 

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.*;

import java.util.Iterator;
```

 **Code** 

```
System.out.println(" - removing objects from bucket");
ObjectListing object_listing = s3.listObjects(bucket_name);
while (true) {
    for (Iterator<?> iterator =
         object_listing.getObjectSummaries().iterator();
         iterator.hasNext(); ) {
        S3ObjectSummary summary = (S3ObjectSummary) iterator.next();
        s3.deleteObject(bucket_name, summary.getKey());
    }

    // more object_listing to retrieve?
    if (object_listing.isTruncated()) {
        object_listing = s3.listNextBatchOfObjects(object_listing);
    } else {
        break;
    }
}
```

[GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java) で完全な例をご覧ください。

### バケットを削除する前にバージョニングされているバケットからオブジェクトを削除する
<a name="remove-objects-from-a-versioned-bucket-before-deleting-it"></a>

[バージョニングされたバケット](https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html)を使用している場合は、バケットを削除する前に、バケットに保存されているすべてのバージョンのオブジェクトも削除する必要があります。

バケット内のオブジェクトを削除する際に使用したのと同じような方法で、バージョニングされたオブジェクトを削除します。まず、AmazonS3 クライアントの `listVersions` メソッドを使用してすべてのバージョニングされたオブジェクトを一覧表示し、次に `deleteVersion` を使用して各オブジェクトを削除します。

 **インポート** 

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.*;

import java.util.Iterator;
```

 **Code** 

```
System.out.println(" - removing versions from bucket");
VersionListing version_listing = s3.listVersions(
        new ListVersionsRequest().withBucketName(bucket_name));
while (true) {
    for (Iterator<?> iterator =
         version_listing.getVersionSummaries().iterator();
         iterator.hasNext(); ) {
        S3VersionSummary vs = (S3VersionSummary) iterator.next();
        s3.deleteVersion(
                bucket_name, vs.getKey(), vs.getVersionId());
    }

    if (version_listing.isTruncated()) {
        version_listing = s3.listNextBatchOfVersions(
                version_listing);
    } else {
        break;
    }
}
```

[GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java) で完全な例をご覧ください。

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

バケットからオブジェクト (すべてのバージョニングされたオブジェクトを含む) を削除したら、AmazonS3 クライアントの `deleteBucket` メソッドを使用してバケット自体を削除できます。

 **インポート** 

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.*;

import java.util.Iterator;
```

 **Code** 

```
System.out.println(" OK, bucket ready to delete!");
s3.deleteBucket(bucket_name);
```

[GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java) で完全な例をご覧ください。