Не удается подключиться к RDS Postgres локально после настройки экземпляра NAT - PullRequest
0 голосов
/ 19 октября 2018

Я работаю над проектом 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 Ответ

0 голосов
/ 20 октября 2018

После некоторой тряски я понимаю, что я был слишком усложнен.RDS должен оставаться в подсетях, с которыми он был запущен, нет необходимости переносить его в те же подсети, что и экземпляр NAT.После того, как я переместил его обратно в исходные подсети, он работал нормально как локально, так и на производстве.

...