Получить 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();
}