我在 Amazon VPC 中的私有子网中有一个实例。此实例使用 NAT 访问 Internet。
我使用 Redshift JDBC 驱动程序连接到与我的 VPC(us-east-1)托管在同一区域内的集群。
运行DriverManager.getConnection();
并返回连接。这应该意味着身份验证成功。但是当我通过此代码执行 SQL 查询时,应用程序无限期挂起,没有任何错误或成功消息:
Statement statement = connection.prepareStatement("SELECT * FROM users");
ResultSet result = statement.executeQuery();
为什么 ?
一些细节:
- 我已经在 VPC 之外尝试过并且有效。
- 我更改了实例(NAT 和私有实例)中的 DNS 解析服务器
- 我的机器上的本地相同代码运行良好。
- 该查询在 Redshift 中可见,并在 14 分钟后中止。
- 当从我的机器执行相同的查询时,需要 9 秒。
- 我在实例日志中找不到任何特定的错误。
答案1
您是否尝试过从 VPC 实例使用 postgresql 客户端?我遇到了同样的问题,这是应用于我的实例的安全组的问题。