Не удается подключиться к RDS Postgres локально после настройки экземпляра NAT
Я работаю над проектом Django, который использует Zappa для размещения безсерверного приложения на Lambda. Он использует базу данных Postgres на задней панели, и я смог использовать ее безупречно в течение некоторого времени. Недавно мне нужно было использовать urllib, и поэтому мне нужен был экземпляр NAT (микроэкземпляр EC2), чтобы Lambda мог выходить в Интернет.
Теперь, когда он настроен, он отлично работает на производстве, я вижу, что мой сайт в порядке, и все части взаимодействуют правильно. Тем не менее, локально, Django не может подключиться, он получает эту ошибку:
django.db.utils.OperationalError: не удалось подключиться к серверу: истекло время ожидания соединения (0x0000274C/10060)
Работает ли сервер на хосте "XXXXXXXXX.XXXXXXXXX.us-west-2.rds.amazonaws.com" (54.70.245.158) и принимает соединения TCP/IP через порт 5432?
Чтобы описать шаги, которые я прошел, я создал сеть VPC с частными и общедоступными подсетями с помощью мастера. Я добавил еще 2 частных подсети в других зонах для доступности. Я перешел к своей функции Lambda и изменил подсети на новые подсети, а также перенес свои RDS в те же подсети (частные). Для моего RDS я создал новую группу безопасности для Postgres (порт 5432, входящий с источником 0.0.0.0/0).
Мой settings.py под Django остается прежним:
DATABASES = {
# AMAZON RDS Instance
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'XXXXXXXXX',
'USER': 'XXXXXXXXX',
'PASSWORD': 'XXXXXXXXX',
'HOST': 'XXXXXXXXXX.XXXXXXXXXX.us-west-2.rds.amazonaws.com',
'PORT': '5432',
}
}
Я не уверен, куда идти отсюда. Я могу честно сказать, что это вне моей зоны комфорта, и я не знаю, что я делаю. Я подозреваю, что есть что-то, что мне нужно сделать с группой безопасности, но я над головой и буду очень признателен за помощь. Спасибо!
1 ответ
После некоторой тряски я понимаю, что я слишком усложнил ситуацию. RDS должен оставаться в подсетях, с которыми он был запущен, нет необходимости переносить его в те же подсети, что и экземпляр NAT. После того, как я переместил его обратно в исходные подсети, он работал нормально как локально, так и на производстве.