Устранение неполадок при подключении Lambda к RDS с помощью пиринга VPC
Время ожидания моей функции AWS Lambda истекает, когда она подключается к экземпляру RDS в другом VPC. VPC проверяются.
Вещи, которые я проверил:
- Лямбда находится внутри правильного VPC
- RDS находится внутри другого VPC
- RDS существует в подсетях, к которым подключены пиринговые сети.
- Пиринг VPC "принят"
- Группа безопасности Lambda имеет разрешение на вход на правильный порт (
5432
) в группу безопасности RDS - Группа безопасности Lambda имеет разрешение на выход в любом месте на любом порту.
- Существуют записи таблицы маршрутов от подсетей Lambda VPC к пирингу.
- Существуют записи таблицы маршрутов от подсетей RDS VPC к пирингу.
Что еще я могу проверить / использовать, чтобы решить эту проблему с подключением?
Обновлять
- Имена хостов DNS и разрешение DNS включены для обоих VPC.
Обновлять
Я пробовал следующее:
- Создайте экземпляр EC2 в той же подсети, что и Lambda
- Назначьте лямбда SG на EC2
- SSH подключиться к EC2
-
telnet
в RDS:
telnet rds.xxxxxxxxxx.eu-west-2.rds.amazonaws.com 5432
Trying 10.11.65.225...
Connected to rds.xxxxxxxxxx.eu-west-2.rds.amazonaws.com.
Escape character is '^]'.
^CConnection closed by foreign host.
Таким образом, EC2 может подключиться. Следовательно, проблема должна быть в лямбде.
Что я могу попробовать дальше?
1 ответ
Проблема в моем случае (может быть, и в вашем тоже?) Заключалась в том, что время ожидания запроса истекло, а не в попытке подключения. Вы можете проверить это, изменив запрос на
SELECT 1 AS x
или похожие. Решение состоит в том, чтобы оптимизировать запрос, чтобы он мог выполняться в разумные сроки.
Уловка запуска EC2 с настройками, аналогичными Lambda, и подключения через SSH - хороший вариант.