Не удается подключиться к 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. После того, как я переместил его обратно в исходные подсети, он работал нормально как локально, так и на производстве.

Другие вопросы по тегам