Я пытаюсь использовать этот пример из документации AWS , чтобы получить файл из S3.
Файл, который я пытаюсь прочитать из S3, является двоичным файлом.Мне нужно InputStream из s3object.getObjectContent () для работы с ним в другой фреймворк .Если я пытаюсь сохранить S3ObjectInputStream, я получаю следующую ошибку:
WARNING: Not all bytes were read from the S3ObjectInputStream, aborting HTTP connection. This is likely an error and may result in sub-optimal behavior. Request only the bytes you need via a ranged GET or drain the input stream after use.
Мой код на самом деле довольно прост:
public String handleRequest(S3Event event, Context context) {
context.getLogger().log("Received event: " + event.toJson());
// Get the object from the evØent and show its content type
String bucket = event.getRecords().get(0).getS3().getBucket().getName();
String key = event.getRecords().get(0).getS3().getObject().getKey();
try (S3Object response = s3.getObject(new GetObjectRequest(bucket, key))) {
Long filesize = response.getObjectMetadata().getContentLength();
System.out.println("File size is: " + filesize);
S3ObjectInputStream s3is = response.getObjectContent();
MsgParser msgp = new MsgParser();
Message msg = msgp.parseMsg(s3is);
String fromEmail = msg.getFromEmail();
String fromName = msg.getFromName();
String subject = msg.getSubject();
} catch (Exception e) {
System.out.println("Unable to get file from S3 with reason: " + e);
}
return "";
}
В чем здесь моя ошибка?