#postgresql #amazon-web-services #docker #amazon-rds #amazon-ecs
#postgresql #amazon-веб-сервисы #docker #amazon-rds #amazon-ecs
Вопрос:
У меня есть настроенное приложение nodejs на ECS, которое должно подключаться к экземпляру postgres, расположенному на Amazon RDS.
Локально я могу запустить контейнер docker и подключиться (чтение / запись) к базе данных RDS
Когда я развертываю контейнер в ECS, я получаю тайм-аут при попытке чтения / записи в RDS Postgres DB.
Я построил свой контейнер docker следующим образом
docker build -t my-app .
Затем я запустил свое приложение docker
docker run -p 80:3000 XXXXXXX
Мой экземпляр RDS запущен на myappdb.ceonhqpz1vl1.us-east-1.rds.amazonaws.com:5432/appdb
Я подумал, что это, должно быть, проблема с портом, но я опубликовал порты, как указано выше. Поэтому я полагаю, что это должно сработать. Но когда я запускаю приложение через свой браузер в AWS и пытаюсь выполнить чтение / запись в БД, запрос занимает много времени, а затем истекает время ожидания.
Я не уверен, где отлаживать на данный момент, я немного новичок в docker
Комментарии:
1. Вы убедились, что группы безопасности AWS настроены должным образом, чтобы разрешить обмен данными?
2. хм, у меня нет. Можете ли вы указать мне правильное место, где я могу посмотреть на это? После быстрого поиска я вижу кое-что о VPC. Должен ли я убедиться, что ECS / RDS находятся под одним и тем же VPC?
3. Это зависит от того, является ли ваш экземпляр RDS общедоступным, но, вероятно, имеет смысл, чтобы оба находились в одном и том же VPC. Для обеспечения подключения двум машинам в одном VPC по-прежнему требуется, чтобы их группа безопасности была правильно настроена.
4. Я убедился, что мой экземпляр RDS общедоступен. Я могу подключаться и читать / записывать в свой экземпляр RDS, когда я запускаю свой контейнер docker локально . Теперь я не понимаю, должен ли я публиковать порт
5432
в моем контейнере docker, чтобы внешние службы, такие как моя таблица RDC, могли обмениваться данными.5. спасибо @Matthew, я нашел решение через группы безопасности
Ответ №1:
Для источника входящего трафика экземпляра RDS была установлена настройка на мой локальный IP-адрес; это означает, что трафик к экземпляру Postgres RDS был ограничен личным IP-адресом. Я изменил его, и поэтому входящий трафик может быть из anywhere
или 0.0.0.0
. Это то, что я хотел для своего варианта использования.