AWS SQS API Gateway Lambda DB

#amazon-web-services #aws-lambda #aws-api-gateway #amazon-sqs

#amazon-веб-сервисы #aws-lambda #aws-api-gateway #amazon-sqs

Вопрос:

Я использую API Gateway Lambda DB.

Если выполняется много запросов, возникает ошибка «Слишком много подключений».

Для тестирования я не хочу увеличивать параметр max connections.

Возможно ли использовать SQS -> Lambda -> API Gateway -> Lambda -> DB?

Или другим способом?

Комментарии:

1. В чем ваша ошибка?

2. Слишком много подключений из базы данных

3. «Возможно ли использовать SQS -> Lambda -> API Gateway», что это означает? Вы хотите вызывать Lambda в сообщениях SQS?

4. Я неправильно понял, мне не нужно использовать SQS, но я хочу устранить ошибку «Слишком много подключений», не изменяя параметр «Максимальное количество подключений».

Ответ №1:

Во-первых, убедитесь, что не создаете новое соединение при каждом вызове вашего lambda. Вы должны создать соединение вне обработчика lambda (чтобы оно было выполнено во время инициализации) или использовать пул соединений.

При этом количество подключений к базе данных будет примерно равно количеству одновременных вызовов.

Вы можете установить ограничение параллелизма для лямбда-выражения таким образом, чтобы оно ограничивало количество активных подключений (но это означает, что запуск вашего лямбда-выражения может завершиться неудачей из-за ограничения параллелизма при его достижении).

Вы можете запустить свой lambda с помощью SQS, и благодаря этому запросы будут помещаться в очередь в случае достижения предела параллелизма, пока предыдущие запросы не будут завершены.

Использование SQS без установки ограничения параллелизма для вашего lambda не решит проблему, поскольку количество одновременных вызовов (= активных подключений) все еще может быть высоким.

Я не вижу никакой пользы от выполнения чего-то вроде ‘SQS -> Lambda -> API Gateway -> Lambda -> DB’. Возможным вариантом использования будет «API Gateway -> SQS -> Lambda».

Вы также можете просто использовать «API Gateway -> Lambda», установив ограничение на параллелизм lambda. В этом случае некоторые вызовы API Gateway могут завершиться неудачей, и их следует повторить с экспоненциальным замедлением.