Получить S3Object из GetObjectResponse в AWS Java SDK 2.0

В AWS Java SDK 1.x я мог получить S3Object из S3Client как это.

S3Object obj = mS3Client.getObject(pBucket, pKey);

Я пытаюсь воспроизвести эту функциональность с помощью AWS Java SDK 2.0 (и получаю S3Object), но самое близкое, что я могу получить, это GetObjectResponseи я не могу найти ни одного простого вызова метода, чтобы превратить ответ в S3Object,

GetObjectResponse response = mS3Client.getObject(
        GetObjectRequest.builder()
                .bucket(pBucket)
                .key(pKey)
                .build())
        .response();

Как я могу получить S3Object от 2.0 S3Clientили построить один из GetObjectResponse?

2 ответа

Используйте ResponseInputStream. Надеюсь, что приведенный ниже код решит вашу проблему.

 ResponseInputStream<GetObjectResponse> s3objectResponse = s3Client.getObject(GetObjectRequest.builder().bucket("BucketName").key("key").build());
    BufferedReader reader = new BufferedReader(new InputStreamReader(s3objectResponse));
    String line;            
    while ((line = reader.readLine()) != null) {            
            System.out.println(line);
    }

Здесь та же проблема, но мне пришлось вернуть массив байтов содержимого.

      public byte[] getContent(String bucketName, String keyInBucket) {
    // Get Client
    S3Client s3client = getS3Client();
    // Get S3 Object
    GetObjectRequest getObjectRequest = GetObjectRequest.builder()
        .bucket(bucketName)
        .key(keyInBucket)
        .build();
    // As Byte array 
    ResponseBytes<GetObjectResponse> response = s3client.getObject(getObjectRequest, ResponseTransformer.toBytes());
    return response.asByteArray();
}
Другие вопросы по тегам