訪問RDS我有使用Java 8AWS LAMBDA無法通過JDBC
測試lambda函數設置到目前爲止,我有
- 給出的lambda函數連接lambda函數的執行角色
AWSLambdaVPCAccessExecutionRole
到我在我的帳戶上唯一的VPC,並選擇VPC內的所有子網,以便它可以訪問我的RDS實例在這種情況下開放給t他是公開的,我可以通過我的筆記本電腦訪問它(即拉姆達代碼實際上運行在分配給
Lambda
遠程主機不VPC內)安全組是最寬鬆的可能(即所有所有CIDR塊的流量)
不過,我仍然無法訪問我的RDS實例運行在AWS上的lambda函數時(但相同的代碼工作在我的筆記本電腦,從main()
功能運行時)
示例代碼
public class Application implements RequestHandler<Object, Boolean> {
private Logger logger = Logger.getLogger(Application.class);
public Boolean handleRequest(Object object, Context context) {
try {
Class.forName("com.mysql.jdbc.Driver");
logger.info("Calling DriverManager.getConnection()");
Connection con = DriverManager.getConnection(
"jdbc:mysql://...endpoint...defaultdb",
"awsops",
"..."
);
Statement stmt = con.createStatement();
logger.info("Test Started!");
ResultSet result = stmt.executeQuery("SELECT\n" +
" last_name, COUNT(*)\n" +
"FROM\n" +
" users\n" +
"GROUP BY\n" +
" last_name\n" +
"HAVING COUNT(*) > 1");
if (result.next()) {
logger.info(result.getString("last_name"));
}
return true;
} catch (Exception e) {
logger.info(e.getLocalizedMessage());
}
return false;
}
}
你能幫我理解我可能做錯了什麼嗎?
的CloudWatch的記錄顯示,此功能可在DriverManager.getConnection()
的RDS實例都有一個安全組的到來。 SG上的入站規則是什麼?另外,http://docs.aws.amazon.com/lambda/latest/dg/vpc-rds.html提供了這個教程。 – jarmod