

 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-objects"></a>

Amazon S3 オブジェクトは、*ファイル*またはデータの集合を表します。すべてのオブジェクトが[バケット](examples-s3-buckets.md)内にある必要があります。

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

**Topics**
+ [オブジェクトのアップロード](#upload-object)
+ [オブジェクトのリスト化](#list-objects)
+ [オブジェクトのダウンロード](#download-object)
+ [オブジェクトのコピー、移動、または名前の変更](#copy-object)
+ [オブジェクトの削除](#delete-object)
+ [複数オブジェクトの一括削除](#delete-objects)

## オブジェクトのアップロード
<a name="upload-object"></a>

AmazonS3 クライアントの `putObject` メソッドを使用して、バケット名、キー名、アップロードするファイルを指定します。*バケットが存在している必要があり、存在しない場合はエラーが発生します*。

 **インポート** 

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

 **コード** 

```
System.out.format("Uploading %s to S3 bucket %s...\n", file_path, bucket_name);
final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build();
try {
    s3.putObject(bucket_name, key_name, new File(file_path));
} catch (AmazonServiceException e) {
    System.err.println(e.getErrorMessage());
    System.exit(1);
}
```

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

## オブジェクトのリスト化
<a name="list-objects"></a>

バケット内のオブジェクトのリストを取得するには、AmazonS3 クライアントの `listObjects` メソッドを使用して、バケット名を指定します。

`listObjects` メソッドは、バケットのオブジェクトに関する情報を提供する [ObjectListing](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/model/ObjectListing.html) オブジェクトを返します。オブジェクト名 (キー) を一覧表示するには、`getObjectSummaries` メソッドを使用して、それぞれがバケット内の単一のオブジェクトを表す [S3ObjectSummary](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/model/S3ObjectSummary.html) オブジェクトのリストを取得し、 メソッドを呼び出してオブジェクト名を取得します。それから、`getKey` メソッドを呼び出してオブジェクト名を取得します。

 **インポート** 

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

 **コード** 

```
System.out.format("Objects in S3 bucket %s:\n", bucket_name);
final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build();
ListObjectsV2Result result = s3.listObjectsV2(bucket_name);
List<S3ObjectSummary> objects = result.getObjectSummaries();
for (S3ObjectSummary os : objects) {
    System.out.println("* " + os.getKey());
}
```

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

## オブジェクトのダウンロード
<a name="download-object"></a>

AmazonS3 クライアントの `getObject` メソッドを使用して、ダウンロードするバケットの名前とオブジェクトを渡します。成功すると、このメソッドによって [S3Object](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/model/S3Object.html) が返されます。*指定されたバケットとオブジェクトキーが存在している必要があり、存在しない場合エラーが発生します*。

オブジェクトのコンテンツは、`getObjectContent` の `S3Object` を呼び出して取得できます。これにより、標準の Java `InputStream` オブジェクトとして動作する [S3ObjectInputStream](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/model/S3ObjectInputStream.html) が返されます。

次の例では、S3 からオブジェクトをダウンロードし、そのコンテンツをファイルに保存します (オブジェクトキーと同じ名前を使用)。

 **インポート** 

```
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.S3Object;
import com.amazonaws.services.s3.model.S3ObjectInputStream;

import java.io.File;
```

 **コード** 

```
System.out.format("Downloading %s from S3 bucket %s...\n", key_name, bucket_name);
final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build();
try {
    S3Object o = s3.getObject(bucket_name, key_name);
    S3ObjectInputStream s3is = o.getObjectContent();
    FileOutputStream fos = new FileOutputStream(new File(key_name));
    byte[] read_buf = new byte[1024];
    int read_len = 0;
    while ((read_len = s3is.read(read_buf)) > 0) {
        fos.write(read_buf, 0, read_len);
    }
    s3is.close();
    fos.close();
} catch (AmazonServiceException e) {
    System.err.println(e.getErrorMessage());
    System.exit(1);
} catch (FileNotFoundException e) {
    System.err.println(e.getMessage());
    System.exit(1);
} catch (IOException e) {
    System.err.println(e.getMessage());
    System.exit(1);
}
```

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

## オブジェクトのコピー、移動、または名前の変更
<a name="copy-object"></a>

AmazonS3 クライアントの `copyObject` メソッドを使用して、1 つのバケットから別のバケットへオブジェクトをコピーできます。コピー元のバケットの名前、コピーするオブジェクト、およびコピー先バケットの名前が継承されます。

 **インポート** 

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.regions.Regions;
```

 **コード** 

```
try {
    s3.copyObject(from_bucket, object_key, to_bucket, object_key);
} catch (AmazonServiceException e) {
    System.err.println(e.getErrorMessage());
    System.exit(1);
}
System.out.println("Done!");
```

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

**注記**  
`copyObject` を [deleteObject](#delete-object) とともに使用して、最初にオブジェクトを新しい名前でコピーし (コピー元とコピー先の両方に同じバケットの使用が可能)、元の場所からそのオブジェクトを削除することで、オブジェクトの**移動**または**名前変更**ができます。

## オブジェクトの削除
<a name="delete-object"></a>

AmazonS3 クライアントの `deleteObject` メソッドを使用して、削除するバケットの名前とオブジェクトを渡します。*指定されたバケットとオブジェクトキーが存在している必要があり、存在しない場合エラーが発生します*。

 **インポート** 

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.regions.Regions;
```

 **コード** 

```
final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build();
try {
    s3.deleteObject(bucket_name, object_key);
} catch (AmazonServiceException e) {
    System.err.println(e.getErrorMessage());
    System.exit(1);
}
```

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

## 複数オブジェクトの一括削除
<a name="delete-objects"></a>

AmazonS3 クライアントの `deleteObjects` メソッドを使用すると、link:sdk-for-java/v1/reference/com/amazonaws/services/s3/model/DeleteObjectsRequest.html`` メソッドに名前を渡すことで、同じバケットから複数のオブジェクトを削除できます。

 **インポート** 

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

 **コード** 

```
final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build();
try {
    DeleteObjectsRequest dor = new DeleteObjectsRequest(bucket_name)
            .withKeys(object_keys);
    s3.deleteObjects(dor);
} catch (AmazonServiceException e) {
    System.err.println(e.getErrorMessage());
    System.exit(1);
}
```

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