Во-первых, позвольте мне уточнить вашу цель: вы хотите иметь конечную точку, скажем https://my.example.com/retrieve
, которая читает некоторый набор файлов из S3 и объединяет их (скажем, в виде ZIP)?
Если да, поддерживает ли какой-либо язык / каркас, который вы используете, кодирование чанков для ответов?
Если да, то, безусловно, можно сделать это без сохранения чего-либо на диске: вы читаете из одного потока (файл, поступающий из S3) и напиши другому (ответ). Я предполагаю, что вы знали, что это уже на основе ваших комментариев к другим ответам.
Однако, исходя из ваших требований к выводу 1-10 ГБ, Lambda не будет работать, поскольку имеет предел 6 МБ для полезных нагрузок ответа (и iir c, который следует за кодировкой Base64).
Таким образом, в мире AWS, который оставляет вас с постоянно работающим сервером, либо EC2, либо ECS / EKS. .
Если вы не выполняете какие-либо дополнительные преобразования по пути, для этого не потребуется много ресурсов ЦП, но если вы ожидаете большой трафик c, это потребует большой пропускной способности сети. Что для меня говорит, что вы хотите иметь относительно большое количество маленьких sh вычислительных блоков. Всегда оставляйте базовое число из них работоспособным и масштабируйте в зависимости от пропускной способности сети.
К сожалению, экземпляры smalli sh EC2 в целом имеют меньшую пропускную способность , хотя семейство a1
, похоже, быть исключением из этого. И Fargate не публикует sh спецификации пропускной способности.
Тем не менее, я бы, вероятно, работал на ECS с Fargate из-за более простой модели развертывания.
Осторожно: Ваша самая большая цена с этой архитектурой почти наверняка будет передача данных. И если вы используете NAT, вы будете не только платить за передачу данных, но и ограничивать пропускную способность. Я бы по крайней мере рассмотрел запуск в publi c su bnet (с назначенными publi c IP).