Lambda подключается к Aurora MySql локально - время ожидания при развертывании на AWS - PullRequest
0 голосов
/ 14 мая 2018

У меня есть кластер Aurora MySql, который был обнародован, чтобы я мог подключиться к нему со своей локальной рабочей станции. Я создал проект aspnetcore, который может подключаться к базе данных, запрашивать и возвращать результаты мне, если я запускаю лямбду локально в VS Code.

Когда я развертываю Lambda в AWS (загружая опубликованный .zip), lambda выполняет API (через API Gateway), которые не очень хорошо взаимодействуют с базой данных. Как только я запускаю API, который пытается подключиться к Aurora, он отключается и завершается ошибкой.

Lambda и RDS находятся в одном и том же VPC и в одних и тех же подсетях. Я пытался, чтобы RDS был как публичным, так и частным, и не работал. Моей лямбде назначена роль IAM, которая предоставляет ему полный доступ RDS и полный доступ VPC. Что еще понадобится лямбде, чтобы поразить Аврору?

Я также пытался запустить Lambda в тех же VPC / Подсетях и без каких-либо VPC. Когда я запускаю его без подключенного VPC, я возвращаю всю трассировку стека в Cloudwatch, говоря, что при попытке подключения истекло время ожидания. Когда я запускаю Lambda в VPC / Subnets, я не получаю никаких сообщений журнала от Lambda, записанных в CloudWatch.

Изменить, чтобы показать настройки группы безопасности

Аврора MySql RDS

enter image description here

Lambda

enter image description here

Группа безопасности

enter image description here

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

Достаточно ли у вас свободного / доступного IP-адреса в вашем VPC для вашей лямбды?

Я отправил один ответ для возможной причины этой ситуации, поскольку вы упомянули, что нет журналов, когда лямбда находится в VPC

Пожалуйста, смотрите мой ответ здесь на другой вопрос StackOverflow

0 голосов
/ 14 мая 2018

Внутри VPC группа безопасности экземпляра RDS должна иметь правило, разрешающее входящий доступ к TCP-порту 3306 для группы безопасности, связанной с функцией Lambda, или для всех подсетей, с которыми связана функция Lambda.

За пределами VPC экземпляру RDS необходимо разрешить доступ с 0.0.0.0/0 ... или, по крайней мере, всем общедоступным IP-адресам, связанным со всем EC2, для всего региона (что составляет несколько миллионов адресов), поскольку Lambda функции вне VPC динамически получают свои IP-адреса из регионального пула EC2 - так что этого лучше избегать.

...