Безсерверная архитектура AWS. Почему я должен использовать шлюз API? - PullRequest
0 голосов
/ 05 июня 2018

Вот мой пример использования:

  • Статический интерфейс реакции, размещенный на s3
  • Бэкэнд Python для анализа данных с длительной лямбда-проводимостью
  • База данных Postgres на rds
  • Бэкэнд и интерфейс взаимодействуют исключительно с JSON
  • Иногда бэкэнд создает и сохраняет файлы powerpoint в корзине s3, а затем отправляет их, отправив ссылку s3 на интерфейс

Убедите менячто стоит пройти через все головные боли при настройке шлюза API для подключения внешнего интерфейса и внутреннего интерфейса, а не вызывать лямбду непосредственно из внешнего интерфейса!

Особенно с учетом тайм-аута 29 с, который недостаточно для моего приложения, то есть янеобходимо реализовать асинхронную обработку и добавить целый другой уровень архитектуры aws (обмен сообщениями, постановка в очередь и опрос с SNS и SQS), что увеличивает стоимость, время и вероятность проблем.Я понимаю, что есть некоторые проблемы безопасности, нет ли способа безопасно вызвать лямбда-функцию?

1 Ответ

0 голосов
/ 05 июня 2018

Вы говорите о вызове лямбды напрямую из 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 часа в сутки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...