AWS lambda Java开放httpsocket超时
在AWS Lambda中,在我的处理函数中运行以下命令:
URL url = new URL("www.sfsuperiorcourt.org");
URLConnection connection = url.openConnection();
connection.setConnectTimeout(2000);
connection.connect();
这是在一个处理函数中。在本地运行时,它很好,可以立即连接,并且我能够检索内容。在Lambda上,它会以java.net.SocketTimeoutException: connect timed out
失败。如果我没有设置连接超时,Lambda本身会在10秒后超时。这种情况持续发生,在我的本地机器上,它持续成功,所以我确信我连接的站点没有问题
我能够在Lambda上成功地进行IP地址解析,所以这不是问题所在。似乎完全与打开插座有关
也许我的角色需要权限才能打开socket?还有其他明显的事情吗?有没有已知的调试TCP层的方法
# 1 楼答案
如果你在VPC中设置了lambda,而你在该VPC中不需要它,只需将lambda设置在noVPC中即可
否则,请阅读我的答案here