Время ожидания контейнера Docker в ECS истекает при передаче RDS Postgres

#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 . Это то, что я хотел для своего варианта использования.