我有一个简单的基于 Java servlet 的应用程序在 EC2 中的 tomcat 服务器的端口 8080 上运行。当我单击一个按钮时,它会返回数据库中的所有用户记录并将它们呈现到屏幕上。
当我使用 Tomcat 在本地主机上部署该应用程序时,该应用程序运行良好,并且它可以很好地连接从中检索用户记录的 RDS。
但是,当我将 WAR 文件部署到 EC2 实例上的 Tomcat 并通过 http://51 访问它时。. .***:8080/MyApp-0.0.1-SNAPSHOT,当我单击同一个按钮时,它不允许我连接到我的 RDS 并返回相同的对象。
EC2 和 RDS 实例共享相同的可用区、VPC(默认)和安全组。 我什至将 EC2 的私有 IP 地址添加到为 RDS 和 EC2 指定入站规则的安全组(入站:Postgres 5432 139... ***)。
我通过 AWS EC2 Instance Connect 连接到我的 EC2(不是通过我的本地主机上的 bash,因为 RDS 是一项托管服务)。我已经在 ec2 上安装了 maven、jdk8、tomcat 和 git ......我还需要安装 postgres 吗?
将war文件复制到var/lib/tomcat/webapps
我运行应用程序后sudo service tomcat start
,可以在我上面提到的地址的8080端口访问它。( http://51.***.***.***:8080/MyApp-0.0.1-SNAPSHOT
)。
以下是 EC2 和 RDS 实例共享的安全组入站规则:
在允许 EC2 和 RDS 相互通信方面我做错了什么?