View a markdown version of this page

Diferencias en la operación de streaming entre 1.x y 2.x del AWS SDK para Java - AWS SDK for Java 2.x

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Diferencias en la operación de streaming entre 1.x y 2.x del AWS SDK para Java

Las operaciones de streaming, como Amazon S3 getObject y sus putObject métodos, admiten el no bloqueo I/O en la versión 2.x del SDK. Como resultado, los objetos del modelo de solicitud y respuesta ya no toman un InputStream como parámetro. En su lugar, para solicitudes sincrónicas, el objeto de solicitud acepta RequestBody, que es un flujo de bytes. El equivalente asincrónico acepta un AsyncRequestBody.

ejemplo de la operación putObject de Amazon S3 en 1.x
s3client.putObject(BUCKET, KEY, new File(file_path));
ejemplo de la operación putObject de Amazon S3 en 2.x
s3client.putObject(PutObjectRequest.builder() .bucket(BUCKET) .key(KEY) .build(), RequestBody.of(Paths.get("myfile.in")));

Un objeto de respuesta de streaming acepta un ResponseTransformer para clientes sincrónicos y un AsyncResponseTransformer para asincrónicos en V2.

ejemplo de la operación getObject de Amazon S3 en 1.x
S3Object o = s3.getObject(bucket, key); S3ObjectInputStream s3is = o.getObjectContent(); FileOutputStream fos = new FileOutputStream(new File(key));
ejemplo de la operación getObject de Amazon S3 en 2.x
s3client.getObject(GetObjectRequest.builder().bucket(bucket).key(key).build(), ResponseTransformer.toFile(Paths.get("key")));

En el SDK para Java 2.x, las operaciones de respuesta de streaming tienen un método AsBytes para cargar la respuesta en la memoria y simplificar las conversiones de tipo común en la memoria.