Вы говорите о вызове лямбды напрямую из JavaScript, работающего на клиентском компьютере.
Я считаю, что единственный способ сделать это - встроить AWS SDK для JavaScript в ваш интерфейс взаимодействия.См .: https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/browser-invoke-lambda-function-example.html
С этим связано несколько проблем безопасности, только некоторые из которых могут быть смягчены.
Во-первых, вам нужно жестко закодировать учетные данные AWS в своем интерфейсе для всего мира.видеть.Доступ к этим учетным данным может быть ограничен по объему, но будьте очень осторожны, чтобы получить это право, иначе вы будете платить за чью-то операцию по шифрованию.
При условии, что вы хотите, чтобы только определенные люди загружали файлы в хранилищеУслуга, за которую вы платите, вам потребуется некоторая форма аутентификации и авторизации.API Gateway на самом деле не выполняет аутентификацию, но он может выполнять авторизацию, хотя и подключается к другим сервисам AWS, таким как Cognito или Lambda (пользовательские авторизаторы).Вы должны будете встроить это в свой бэкэнд Lambda самостоятельно.Абсолютно выполнимо и, вероятно, не намного больше усилий, чем использование специального авторизатора из шлюза API.
Основная проблема с подключением к Lambda direct заключается в том, что Lambda имеет возможность быстрого масштабирования, что может быть проблемой, если кто-то попытаетсяударить вас атакой отказа в обслуживании.Лямбда дешевая, но запуск 1000 одновременных экземпляров 24 часа в сутки сложится.
API-шлюз позволяет ограничивать скорость в секунду / минуту / час / и т. Д., Lambda позволяет ограничивать количество одновременных экземпляров в любой момент времени.Поэтому, если вы установите этот предел равным 1, злоумышленник может заставить этот экземпляр работать 24 часа в сутки.