2

Я экспериментировал с AWS API Gateway и AWS Lambda, чтобы опробовать архитектуру без сервера. Проходили блоги и документацию AWS. Попробовали образец GET/POST. Но, у меня есть следующие требования отслеживания WRT пользовательские события из моего пользовательского приложенияОтвет AWS API Gateway по умолчанию и Trigger AWS Lambda

  • События размещаются от моего приложения конечного API точки
    • Я хотел API, чтобы ответить назад с помощью пользовательского ответа (Say { «отлично»}) (признание того, что запрос был получен)
  • После того, как ответ посылают, рукой по полезной нагрузке события к функции АМС Lambda

В соответствии с документацией, я понимаю, а) я могу послать сообщение в конце API точку б) GET/POST вызвать функцию AWS Lambda - откликнитесь назад от функции AWS Lambda по запросу API

I хотел изменить вышеизложенное и изменить его на a) Опубликовать события в конечной точке API a.0) Ответ назад, подтверждающий получение этого запроса [Say {'fine'}] b) Функция Lambda Trigger AWS для обработки полезной нагрузки события

Просьба поделиться мнениями о том, как добиться того же.

ответ

0

Другой асинхронный модель, использованная многими клиентами:

  1. Настройте API, сконфигурированный на send requests to Amazon Kinesis. Этот API может подтвердить запрос.
  2. Настройка AWS Лямбда до consume your Kinesis stream.

Эта настройка имеет некоторые преимущества для API с высокой рабочей нагрузкой, поскольку выборки из потока Kinesis могут быть собраны и не требуют масштабирования 1-к-1 как ваших ограничений API-шлюза, так и пределов Лямбда.

Update

Чтобы ответить на ваши вопросы о масштабируемости:

Kinesis

Kinesis весы, добавив, что он называет "Осколки" в потоке. Каждый осколок обрабатывает часть вашего трафика на основе ключа раздела. Каждый осколок весит до 1000 об/мин или 1 Мбит/с (see limits). Даже при более низких по умолчанию 25 шагах это будет поддерживать до 25 000 rps или 25MBps с равномерно распределенным ключом раздела.

API Шлюз

API Шлюз имеет предел уровня учетной записи по умолчанию 500 оборотов в секунду, но это может быть легко расширена путем запроса увеличение лимита. У нас есть клиенты на производстве, которые пользуются услугой в пределах, превышающих текущую предлагаемую шкалу.

+0

Конечно. Попробуй это. – user1652054

+0

Онлайн-опрос показывает, что Kinesis может не очень хорошо масштабироваться для очень высокой пропускной способности, например, Kafka. Скажем, если я увеличиваю это число на 6000 - 8000 запросов в секунду, сможет ли API Gateway & Kinesis справиться с этим? Скажите, мой средний. размер полезной нагрузки составляет около 25 - 30 КБ? – user1652054

+0

@ user1652054 Я обновил свой ответ с некоторой информацией о масштабировании. Надеюсь, это ответит на ваш вопрос. –

0

Если вы хотите быстрый ответ от API и не должны ждать обработки данных, вы можете:

  • после события к API шлюза конечной точки
  • триггера Функция AWS Lambda
  • вызов асинхронно лямбда-функции B с помощью AWS SDK в лямбда-функции
  • Cal л context.succeed() или context.done() или функцию обратного вызова в функции лямбда поэтому ответить назад к API шлюза
  • Лямбда функции В может обрабатывать данные в то время как Шлюз API уже получил ответ
+0

Спасибо. Это может означать двойной биллинг. Мне было интересно, есть ли способ, чтобы шлюз API закрывал цикл ответа (например, как это возможно в конечных точках приложения Nodejs express), а затем продолжить обработку. – user1652054

+0

Конечно, вам будет поручено за это дополнительное выполнение лямбды, но с 128 МБ памяти и исполнением, вероятно, ниже 100 мс, дополнительные затраты должны быть очень ограниченными. Вы должны сравнить его с ценой других решений, таких как Kinesis, в зависимости от объема запросов, которые вы ожидаете. –

0

Сначала вы должны запустить несколько тестов, чтобы узнать, какое время ответа реального мира вы получаете от того, что ваша лямбда-функция выполняет всю логику. Если время выше того, что вы считаете приемлемым для вашего случая использования, вот еще одно асинхронное решение utilizing an SNS Topic для запуска secondary Lambda function.

  1. Client Запрос API Шлюз -> Вызовы функции лямбда
  2. Lambda проверяет полезную нагрузку, а затем публикует на SNS Тема X
  3. Lambda возвращает {fine} сообщение об успешном завершении -> API Gateway -> клиент
  4. SNS тема X запускает Лямбда функция B
  5. Lambda функция B инвентарем данные логики
Смежные вопросы