Чтобы загрузить файл из S3 с помощью java SDK, нам нужно сделать следующее ->
Примечание. Многопользовательская загрузка отключена.
S3Object s3Object = s3.getObject(getObjectRequest);
S3ObjectInputStream s3ObjectInputStream = s3Object.getObjectContent();
//Write to a file from this stream
Когда мы выполняем вызов getObject, SDK выполняет вызов GET для этого объекта.
Этот вызов возвращает только заголовки ответа.
Когда мы на самом деле начинаем чтение из s3ObjectInputStream, мы получаем тело ответа.
Но это все один вызов REST.
Итак, я был озадачен, почему вызов вернул сначала только заголовки.
А как S3 узнал, когда начинать отправку в теле ответа?
Мы делаем только один вызов, так как мы уведомляем S3 о том, что мы сейчас начали чтение из s3ObjectInputStream.
Где хранится фактический файл, пока мы не прочитаем его из потока?