У меня нет особого контекста, поэтому в основном я попытаюсь дать ответ, исходя из того, как я его вижу.
Во-первых, вместо отправки данных в webapi, я бы отправлял данные непосредственно на S3.В Azure есть токен общего доступа, поэтому вы отправляете запрос в api, чтобы указать URL-адрес для загрузки файла (есть много вариантов, но вы можете ограничить по времени, ограничить по IP, который может загружать).Таким образом, чтобы загрузить файл 1. Звоните, чтобы получить URL-адрес загрузки, 2. положить на этот URL-адрес.Похоже, в Amazon это называется Signed Policy .
После этой функции записи лямбда, которая будет запускаться при загрузке S3, эта функция будет отправлять событие (Опять же, я не знаю, как это происходит в AWS, нов Azure я отправлю сообщение Blob Queue) это событие будет содержать URL-адрес файла и начальную позицию.
Напишите вторую лямбду, которая слушает события и фактически выполняет обработку, поэтому в моих приложениях иногда я знаю, что обрабатывать N элементовэто занимает 10 секунд, поэтому я обычно выбираю N, чтобы он был не длиннее 10-20 секунд из-за характера развертываний.После того, как вы обработали N строк и еще не закончили, отправьте то же событие, но теперь Начальная позиция = Начальная позиция в начале + N. Дополнительная информация Как читать диапазон
Разработав этот способ, вы можете обрабатывать большиефайлы, тем более вы можете быть умнее, потому что вы можете отправлять несколько событий, где вы можете сказать Начальная строка, Конечная строка, чтобы вы могли обрабатывать ваш файл в нескольких случаях.
PS.Почему я не рекомендую вам загружать файлы в WebApi, потому что эти файлы будут в памяти, поэтому предположим, что у вас есть файлы размером 1 ГБ, отправляемые из нескольких источников, в этом случае вы убьете свои серверы за считанные минуты.
PS2.Формат файла зависит, может быть JSON, так как это самый простой способ чтения этих файлов, но имейте в виду, что если у вас большие файлы, будет дорого читать весь файл в память.Вот пример того, как правильно их читать .Таким образом, другой вариант может быть простым файлом, тогда его будет легко прочитать, так как тогда вы можете прочитать диапазон и обработать его
PS3.В Azure я бы использовал Пакетные задания Azure