Я работаю над проектом 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',
}
}
Я не уверен, куда идти дальше. Я могу честно сказать, что это вне моей зоны комфорта, и я не знаю, что делаю. Я подозреваю, что мне нужно кое-что сделать с группой безопасности, но я не в себе и буду очень признателен за помощь. Спасибо!