Я читаю файл 1,5 МБ, расположенный на S3, из AWS лямбды:
public class AwsFileStorage {
private static final AmazonS3 amazonS3;
static {
var builder = AmazonS3ClientBuilder.standard();
builder.setRegion(MY_REGION);
amazonS3 = builder.build();
}
public InputStream read(String filekey) {
var initTime = Instant.now(); // Timer ON
var s3Object = amazonS3.getObject("bucket-name", filekey);
var endTime = Instant.now(); // Timer OFF
var millis = Duration.between(initTime, endTime).toMillis();
System.out.println(millis);
return s3Object.getObjectContent();
}
}
Когда я запускаю этот код на 512 МБ AWS лямбда (в том же регионе моего S3 ) прямо из консоли AWS я получил:
3642 миллис
Но когда я запускаю тот же код, также извлекаю файл из AWS S3 :
486 миллис
Я не понимаю, как это возможно, что выполнение AmazonS3.getObject()
могло бы работать на моем ноутбуке в 10 раз быстрее, чем с лямбда, выполненного через инфраструктура AWS, даже если файл также размещен в той же инфраструктуре AWS - в том же регионе.
Есть ли причина такой задержки? Есть ли другой, более оптимальный способ чтения файла, размещенного на S3, из AWS лямбды?
Заранее спасибо