使用 S3AsyncClient 从 AWS Java SDK 2 中的 GetObjectResponse 获取 S3Object 输入流?

Ram*_*gil 5 java amazon-s3 aws-java-sdk-2.x

如何InputStream使用 S3AsyncClient 为 getObject 请求创建 plain?

AWS JDK 2.0 的S3AsyncClient似乎没有以与 S3Client 同步客户端相同的方式返回的函数ResponseInputStream<GetObjectResponse>

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

S3AsyncClient s3AsyncClient = ...;


CompletableFuture<GetObjectResponse> response = s3AsyncClient.getObject(
    GetObjectRequest.builder()
            .bucket(bucket)
            .key(key)
            .build(),
    path));    
Run Code Online (Sandbox Code Playgroud)

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

预先感谢您的考虑和回复。

San*_*ani 3

下面的代码将为您提供输入流。

ResponseInputStream responseInputStream = s3AsyncClient.getObject(GetObjectRequest.builder()
        .bucket(bucket)
        .key(key)
        .build(),
        AsyncResponseTransformer.toBlockingInputStream())
Run Code Online (Sandbox Code Playgroud)