我在一个AWS账户下创建了RDS MySQL数据库。此数据库已打开,我可以通过Workbench或任何其他桌面应用程序进行连接。
此外,我还有其他AWS账户,我正在尝试创建Lambda函数,以便从我的第一个账户连接到RDS DB。
看起来这是不可能的,因为我每次都会超时。
这是我的Lambda Java代码:
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import java.sql.DriverManager;
public class DBTest implements RequestHandler<String, String> {
@Override
public String handleRequest(String input, Context context) {
context.getLogger().log("Input: " + input+"\n");
try {
StringBuilder url = new StringBuilder();
url.append("jdbc:mysql://").
append("jackdbinstance.********.eu-west-1.rds.amazonaws.com:3306/").
append("TestLambdaDB"+"?").
append("user=******&").
append("password=*******");
DriverManager.getConnection(url.toString());
return "DB connected";
} catch (Exception e) {
return e.toString();
}
}
}
使用相同的代码,我可以从我的桌面java应用程序连接,没有任何问题。
我没有使用VPC,我为Lambda分配了512Mb内存,超时设置为30秒(从我看来已经足够了)
有人可以帮忙吗?
答案 0 :(得分:2)
问题与RDS实例的安全组配置有关,只有一个IP申请连接,不知何故,我创建RDS实例时自动设置了这个规则。