Не удается подключиться к 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',
    }
}

Я не уверен, куда идти дальше. Я могу честно сказать, что это вне моей зоны комфорта, и я не знаю, что делаю. Я подозреваю, что мне нужно кое-что сделать с группой безопасности, но я не в себе и буду очень признателен за помощь. Спасибо!


person user3787031    schedule 18.10.2018    source источник


Ответы (1)


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

person user3787031    schedule 20.10.2018