Проблема связи между лямбда-функцией и MySQL на RDS - PullRequest
0 голосов
/ 28 мая 2019

Я пытаюсь получить доступ к базе данных MySQL на Amazon RDS из функции AWS Lambda Python.После запуска теста выдается ошибка соединения:

"errorMessage": "2019-05-27T15: 14: 26.967Z f6e8ae8d-1dfc-4be5-9e00-a2c937e4ca2c Тайм-аут задачи после 3.00секунд "

Я полагаю, что это вызвано конфигурацией VPC или NAT или группы безопасности.

Я пытался следовать:

Но все еще не работает

У меня есть:

  • VPC по умолчанию с одним подключенным интернет-шлюзом
  • 2 подсети с CIDR IPv4 xxx.xx.0.0/20 (subnet001) и xxx.xx.16.0/20 (подсеть002) связана с одной таблицей маршрутизации и одним списком ACL для сети.
  • Шлюз NAT связан с подсетью001

Мой вопрос:

Согласно этим двум учебникам,Мне понадобится один VPC, четыре подсети (1,2,3,4), первые две подсети связаны с основнымТаблица доступа к локальному и интернет-шлюзу.И вторые две подсети связываются с таблицей маршрутизации «лямбда-в-интернет», которая имеет доступ к локальному шлюзу и шлюзу NAT.

Шлюз NAT должен связываться с подсетью 1. Правильно ли я?

А для сетевого ACL все четыре подсети ассоциируются с одним и тем же ACL?

В настройке Lambda VPC:добавить все четыре подсети или только последние две подсети?

rds_host = "my_host_name"
name = "my_username"
password = "my_password"
db_name = "my_db_name"

conn = pymysql.connect(rds_host, user=name, passwd=password, db=db_name, connect_timeout=5)

1 Ответ

0 голосов
/ 29 мая 2019

В вашем вопросе много информации, поэтому на все это трудно ответить, но, похоже, ваш основной вопрос - как разрешить лямбда-функции AWS подключаться к экземпляру Amazon RDS.

Ваша конфигурация должна быть такой:

  • Функция Lambda, настроенная для подключения к VPC (любая подсеть, это не имеет значения)
  • Экземпляр Amazon RDS, запущенный втот же VPC
  • Группа безопасности (Lambda-SG) для функции Lambda - ей не требуется конфигурация, но она должна существовать
  • Группа безопасности (RDS-SG) наЭкземпляр базы данных Amazon RDS, который разрешает входящий трафик с Lambda-SG на порт 3306

Обратите внимание, что RDS-SG разрешает соединение с Lambda-SG.Группа безопасности может ссылаться на другую группу безопасности.

Кроме того, увеличьте время ожидания для вашей функции Lambda.В настоящее время он установлен на 3 секунды, что может быть недостаточно для выполнения того, что вы пытаетесь сделать.Время ожидания соединения установлено на 5 секунд, поэтому вам нужно, чтобы лямбда-функция работала дольше, чем это время, чтобы подтвердить происходящее.

Это все, что вам нужно.Вам не нужен шлюз NAT для этой настройки.Требуется только в том случае, если вы хотите, чтобы функция Lambda была подключена к VPC И имела возможность подключения к Интернету.Для того, что вы описали, вам нужна только одна подсеть (для экземпляра базы данных RDS), но вашей архитектуре может потребоваться больше для других ресурсов, которые вы используете.Событие Интернет-шлюз не требуется для лямбда-бит и RDS.Но сфокусируйтесь на том, чтобы установить соединение Lambda-RDS, и тогда вы сможете очистить вещи.

...