Amazon S3 オブジェクトに対する操作の実行 - AWS SDK for Java 1.x

AWS SDK for Java 1.x は 2024 年 7 月 31 日にメンテナンスモードに入り、2025 年 12 月 31 日に end-of-support に到達します。新しい機能、可用性の向上、セキュリティの更新を引き続き受け取るAWS SDK for Java 2.xには、 に移行することをお勧めします。

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

Amazon S3 オブジェクトに対する操作の実行

Amazon S3 オブジェクトは、ファイルまたはデータの集合を表します。すべてのオブジェクトがバケット内にある必要があります。

注記

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

オブジェクトのアップロード

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

インポート

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

Code

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 で完全な例をご覧ください。

オブジェクトのリスト化

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

listObjects メソッドは、バケットのオブジェクトに関する情報を提供する ObjectListing オブジェクトを返します。オブジェクト名 (キー) を一覧表示するには、getObjectSummaries メソッドを使用して、それぞれがバケット内の単一のオブジェクトを表す S3ObjectSummary オブジェクトのリストを取得し、 メソッドを呼び出してオブジェクト名を取得します。それから、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;

Code

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 で完全な例をご覧ください。

オブジェクトのダウンロード

AmazonS3 クライアントの getObject メソッドを使用して、ダウンロードするバケットの名前とオブジェクトを渡します。成功すると、このメソッドによって S3Object が返されます。指定されたバケットとオブジェクトキーが存在している必要があり、存在しない場合エラーが発生します

オブジェクトのコンテンツは、getObjectContentS3Object を呼び出して取得できます。これにより、標準の Java InputStream オブジェクトとして動作する S3ObjectInputStream が返されます。

次の例では、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;

Code

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 で完全な例をご覧ください。

オブジェクトのコピー、移動、または名前の変更

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

インポート

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

Code

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 で完全な例をご覧ください。

注記

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

オブジェクトの削除

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

インポート

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

Code

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 で完全な例をご覧ください。

複数オブジェクトの一括削除

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;

Code

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 で完全な例をご覧ください。