AWS SDK for Java の 1.x と 2.x のストリーミングオペレーションの違い - AWS SDK for Java 2.x

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

AWS SDK for Java の 1.x と 2.x のストリーミングオペレーションの違い

Amazon S3 の getObjectputObject メソッドなどのストリーミングオペレーションは、 SDK のバージョン 2.x でノンブロッキング I/O をサポートしています。その結果、リクエストとレスポンスのモデルオブジェクトでは InputStream をパラメータとして使用しなくなりました。代わりに、同期リクエストのリクエストオブジェクトでは、バイト単位のストリームである RequestBody を受け付けるようになりました。非同期の場合は AsyncRequestBody を受け付けます。

例 1.x での Amazon S3 putObject オペレーション
s3client.putObject(BUCKET, KEY, new File(file_path));
例 2.x での Amazon S3 putObject オペレーション
s3client.putObject(PutObjectRequest.builder() .bucket(BUCKET) .key(KEY) .build(), RequestBody.of(Paths.get("myfile.in")));

V2 では、ストリーミングレスポンスオブジェクトは同期クライアントで ResponseTransformer を受け付け、非同期クライアントで AsyncResponseTransformer を受け付けます。

例 1.x での Amazon S3 getObject オペレーション
S3Object o = s3.getObject(bucket, key); S3ObjectInputStream s3is = o.getObjectContent(); FileOutputStream fos = new FileOutputStream(new File(key));
例 2.x での Amazon S3 getObject オペレーション
s3client.getObject(GetObjectRequest.builder().bucket(bucket).key(key).build(), ResponseTransformer.toFile(Paths.get("key")));

SDK for Java 2.x では、ストリーミングレスポンスオペレーションには、レスポンスをメモリにロードし、一般的なタイプのインメモリ変換を簡素化する AsBytes メソッドがあります。