[英]AWS Lambda Java, connect to MySQL RDS
我需要開發一個 AWS Lambda Java 函數來從 RDS MySQL 數據庫中檢索一些記錄。
我應該使用JDBC嗎? 我應該使用標准的 JDBC 示例:
try {
String url = "jdbc:msql://200.210.220.1:1114/Demo";
Connection conn = DriverManager.getConnection(url,"","");
Statement stmt = conn.createStatement();
ResultSet rs;
rs = stmt.executeQuery("SELECT Lname FROM Customers WHERE Snum = 2001");
while ( rs.next() ) {
String lastName = rs.getString("Lname");
System.out.println(lastName);
}
conn.close();
} catch (Exception e) {
System.err.println("Got an exception! ");
System.err.println(e.getMessage());
}
第 1 步:
AWS 服務角色 ->
a) 選擇 aws lambda
b) 附加策略“AWSLambdaFullAccess”
第 2 步:
右鍵單擊項目選擇 Run as --->5.maven build...
為目標提供名稱package shade:shade
轉到項目文件夾和 target/lamda-0.0.1-SNAPSHOT-shaded.jar
第 3 步:
名稱:時間測試
a) 運行時-java
b) 上傳 .zip(.jar) 文件 (target/lamda-0.0.1-SNAPSHOT-shaded.jar)
提供package.class-name::myhandler
-> Handler
角色 -> lambda-vpc-exceution-role
vpc 提供 rds-vpc 詳細信息(這應該在同一個 vpc 組中工作)
創建函數
在操作下拉列表中選擇配置測試事件結果將顯示如下“執行結果:成功(日志)”
是的,您需要在 lambda 函數類中使用標准的 JDBC 代碼。 您提供的代碼看起來沒問題。 通過 Lamda 函數訪問 RDS 或任何其他 RDBMS 時,您還需要做一些事情 -
您可以通過控制台測試 Lambda 函數,並在 CloudWatch 日志中查看實際輸出。
你可以使用這種實現:
public static DataSource getDataSource(){
Utils._logger.log("Get data source");
MysqlDataSource mysqlDs = null;
try{
mysqlDs = new MysqlDataSource();
mysqlDs.setURL('jdbc:msql://'+'url');
mysqlDs.setUser('user');
mysqlDs.setPassword('pwd');
Utils._logger.log("Object "+mysqlDs.getUrl()+" "+mysqlDs.getUser()+" ");
return mysqlDs;
}
catch(Exception e) {
Utils._logger.log("No se pudo abrir el archivo de properties");
e.printStackTrace();
}
return mysqlDs;
}
我在您的代碼庫中特別注意到的一件事是,即使您使用此 Lambda 函數連接到您擁有的特定 RDS,主機名也可能不是 Amazon RDS 的正確主機名。 它必須是您嘗試連接的 RDS 的端點,並且您的完整連接 URL 如下所示 -
//jdbc:mysql://hostname(RDS的端點):port/databasename
String url = "jdbc:mysql://"+dbHost+":3306/"+dbName;
由於這些端點可以針對不同的數據庫和服務器進行更改,因此您可以將它們設置為 Lambda 中的環境變量並使用
String dbHost = System.getenv("dbHost");
String dbName = System.getenv("dbName");
Lambda 支持的更簡潔和無狀態的設計。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.