2015-07-27 4 views
7

Я пытаюсь загрузить файл с iOS в AWS API Gateway и передать его функции Lambda, как я могу реализовать этот сценарий?Как загрузить файл в лямбда-функцию или API-шлюз?

Я могу использовать multipart/form-data для загрузки в AWS API Gateway, но как сделать входную модель поддержки модели двоичными данными?

[Edit1] переехал из ответа на Spektre

Спасибо для ответа, после немного чтения я полагаю, что нет никакого способа, чтобы загрузить файл на лямбда (и это не логично, поскольку он основан событие) и только действительный вариант использования для загрузки на S3 и сделать S3 уведомлять лямбда.

+0

** [Edit1] ** реакция @kixorz переехал из недействительного ответа на Spektre: Вам нужно настроить интеграции запроса и типов контента, а затем вы можете загрузить, как вы бы на любой другой веб-службы. – Spektre

ответ

8

Я бы рекомендовал использовать прямую S3 загрузку с использованием одного из AWS SDKs. AWS Lambda подходит для обработки только коротких событий, а не для передачи контента, например, для загрузки. Вы можете проверить его выставление счетов и лимиты, чтобы принять более обоснованное решение, если это действительно то, что вы ищете.

+3

Это не совсем так, особенно сейчас. При загрузке файлов существует 5-минутный тайм-аут - если вы не сможете завершить загрузку файла в течение этого времени, приложение должно получить обзор архитектуры. Загрузка непосредственно на S3 имеет свои плюсы и минусы - безопасность, ограничения преобразования данных и т. Д. – Vladimir

+0

Что не так? API Gateway теперь поддерживает двоичный файл, но это ничего не меняет в отношении вышеуказанной рекомендации. – kixorz

+3

Вышеупомянутая рекомендация не является предупреждением - нет реальной причины не использовать Lambda для загрузки файлов. Использование S3 для загрузки с веб-сайта, хотя и очень полезно во многих ситуациях, создает еще один уровень обработки. Загружая напрямую в Lambda, вы можете сделать свое преобразование во время загрузки и опубликовать результат на S3 один раз. С другой стороны, для загрузки на S3 сначала требуется вызвать функцию Lambda для преобразования файла, а затем сохранить его снова в другое ведро (или путь). У всех есть свои плюсы и минусы - нет правильного ответа, особенно без дополнительной информации. – Vladimir