Java S3 getObjectContent - PullRequest
       11

Java S3 getObjectContent

0 голосов
/ 28 октября 2018

Я пытаюсь использовать этот пример из документации 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 "";
}

В чем здесь моя ошибка?

...