Я запускал серверное веб-приложение на лямбде внутри VP C и подключался к экземпляру Aurora- MySQL RDS с правилами входящего трафика, разрешающими трафик c из группы безопасности лямбды. Соединение работал нормально, однако, довольно часто лямбда-холодный старт давал мне тайм-аут. После некоторых исследований я обнаружил, что запуск лямбды на VP C приносит дополнительные затраты при запуске, и я увидел рекомендацию в более чем 1 месте, чтобы не использовать лямбду на VP C, за исключением случаев, когда вам строго необходим доступ некоторый ресурс в VP C.
Итак, я решил переместить мой RDS в общедоступный экземпляр, чтобы моя лямбда могла получить к нему доступ через inte rnet и удалить лямбду из VP C.
Итак, я изменил опцию RDS Public accessibility
на Yes
и отредактировал группу безопасности, чтобы разрешить входящее соединение с любого IP. Я также удалил VP C из лямбды, поэтому лямбда больше не работает на VP C. Я подумал, что этого будет достаточно.
Но затем моя лямбда не смогла подключиться к база данных, которую я пытался подключить с помощью локального клиента, опять-таки, ошибка
попыталась пропинговать имя хоста, получил тайм-ауты запроса
Немного покопавшись, я обнаружил, что мой экземпляр БД su bnet группа с некоторыми частными подсетями может быть проблемой (?) Итак, я создал новую группу su bnet только с подсетями publi c и попытался переместить мой экземпляр db в новую группу su bnet. но получил это сообщение:
You cannot move DB instance my-instance to subnet group my-new-group. The specified DB subnet group and DB instance are in the same VPC.
Хорошо, похоже, что я не могу перейти к другому su bnet в том же VP C, я начал пытаться создать новый VP C, но, похоже, это не правильно, и я уверен, что здесь есть что-то еще, чего мне не хватает.
Я также читал о ACL в сети и подумал, что это может быть проблемой, но мои правила кажется, все в порядке, с правилом по умолчанию, позволяющим любой т raffi c (и правило * для DENY)
ALL Traffic ALL ALL 0.0.0.0/0 ALLOW
Мои настройки сети RDS
Subnet group
default
Subnets
subnet-11111111
subnet-22222222
subnet-33333333
subnet-44444444
subnet-55555555
subnet-66666666
Security
VPC security groups
default (sg-111111)
( active )
Public accessibility
Yes
Правила входящих в мою группу безопасности
Type Protocol Port range Source Description - optional
All traffic All All 0.0.0.0/0 -
All traffic All All ::/0 -
Все еще не могу подключиться, не могу подключиться к моему локальному клиенту, даже не могу пропинговать его:
Подключиться через мой локальный клиент
Can't connect to MySQL server on 'my-instance.xxxxxxxxxx.us-east-1.rds.amazonaws.com'
ping my-instance.xxxxxxx.us-east-1.rds.amazonaws.com
PING ec2-xx-xx-xx-xx.compute-1.amazonaws.com (xx.xx.xx.xx): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
Любой Идея о том, что мне здесь не хватает?
ОБНОВЛЕНИЕ
Мой VP C имеет доступ inte rnet (я могу получить доступ к службам inte rnet из него, не проблема), у меня есть Inte rnet Gateway и NAT Gateway.
Я использую Zappa для лямбда-развертывания, которое заботится о создании функции поддержки ... однако, Я знаю, что одновременные запросы все еще могут быть проблемой
Проблема с VP C в лямбде заключается в том, что он может добавить 10 секунд при холодном старте, что для некоторых из моих вариантов использования бесполезно: https://www.freecodecamp.org/news/lambda-vpc-cold-starts-a-latency-killer-5408323278dd/