AWS SDK for Java 1.x は 2024 年 7 月 31 日にメンテナンスモードに入り、2025 年 12 月 31 日に end-of-support
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 が返されます。指定されたバケットとオブジェクトキーが存在している必要があり、存在しない場合エラーが発生します。
オブジェクトのコンテンツは、getObjectContent
の S3Object
を呼び出して取得できます。これにより、標準の 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
注記
copyObject
を deleteObject とともに使用して、最初にオブジェクトを新しい名前でコピーし (コピー元とコピー先の両方に同じバケットの使用が可能)、元の場所からそのオブジェクトを削除することで、オブジェクトの移動または名前変更ができます。
オブジェクトの削除
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