【发布时间】:2019-04-18 06:47:35
【问题描述】:
我在 ECS 上有一个 dockerized nodejs 应用程序,它应该连接到位于 Amazon RDS 上的 postgres 实例。
在本地,我可以运行 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 有点陌生
【问题讨论】:
-
您是否确保正确配置 AWS 安全组以允许通信?
-
嗯,我没有。您能指出我可以查看的正确位置吗?快速搜索后,我看到了一些关于 VPC 的信息。我应该确保 ECS/RDS 在同一个 VPC 下吗?
-
这取决于您的 RDS 实例是否可公开访问,但两者位于同一 VPC 中可能更有意义。同一 VPC 中的两台机器仍需要正确配置其安全组以确保连接性。
-
我确保我的 RDS 实例是公开可用的。当我运行我的 docker 容器本地时,我能够连接和读/写我的 RDS 实例。我现在对是否应该在我的 docker 容器上发布端口
5432感到困惑,以便像我的 RDC 表这样的外部服务可以通信。 -
感谢@Matthew,我通过安全组找到了解决方案
标签: postgresql amazon-web-services docker amazon-rds amazon-ecs