使用AWS Java SDK 2中的S3AsyncClient,如何从GetObjectResponse获取S3Object InputStream?

5

如何使用S3AsyncClient创建一个普通的InputStream以获取getObject请求?

AWS JDK 2.0的S3AsyncClient似乎没有像同步客户端S3Client一样返回ResponseInputStream<GetObjectResponse>的函数。

唯一可用的返回类型是CompletableFuture<GetObjectResponse>,但返回该类型的方法假定数据将传输到本地路径。

S3AsyncClient s3AsyncClient = ...;


CompletableFuture<GetObjectResponse> response = s3AsyncClient.getObject(
    GetObjectRequest.builder()
            .bucket(bucket)
            .key(key)
            .build(),
    path));    

这里有一个类似的stackoverflow项目,但问题和答案都使用了同步的S3Client。

非常感谢您的考虑和回复。

1个回答

3
以下代码将为您获取输入流。
ResponseInputStream responseInputStream = s3AsyncClient.getObject(GetObjectRequest.builder()
        .bucket(bucket)
        .key(key)
        .build(),
        AsyncResponseTransformer.toBlockingInputStream())

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接