无法从 AWS Lambda 连接到 AWS RDS MySql DB。 ClassNotFoundException:com.mysql.jdbc

Posted

技术标签:

【中文标题】无法从 AWS Lambda 连接到 AWS RDS MySql DB。 ClassNotFoundException:com.mysql.jdbc【英文标题】:Not able to connect to AWS RDS MySql DB from AWS Lambda. ClassNotFoundException: com.mysql.jdbc 【发布时间】:2019-09-01 14:48:37 【问题描述】:

我正在使用 maven 项目并在 pom.xml 文件中添加了 mysql 连接器依赖项,因此我能够正确访问 RDS MySql 数据库。 但是,当我将 maven 构建 jar 部署到 AWS Lambda 并尝试使用 API Gateway 调用调用该函数时,它在 cloudwatch 中显示以下错误。

*Error :*
com.mysql.jdbc.Driver: java.lang.ClassNotFoundException
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at com.project.Apigateway.App.handleRequest(App.java:23)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)

我不明白为什么在我将项目 jar 部署到 AWS Lambda 时,依赖项没有得到解决。 请帮我提出您宝贵的建议。

    public Connection makeJDBCConnection() throws ClassNotFoundException 

            try 
                Class.forName("com.mysql.jdbc.Driver");
                String userName = "*****";
                String password = "*****";
                String dbName = "user";
                String jdbcUrl = "jdbc:mysql://savetemp.cga2ptefm4rq.ap-south-1.rds.amazonaws.com:3306/" + dbName + "?user="
                        + userName + "&password=" + password;
                crunchifyConn = DriverManager.getConnection(jdbcUrl);
                if (crunchifyConn != null) 
                    connected = true;
                
             catch (Exception ex) 
                System.out.println("MySQL Connection Failed!" + ex);
            
            return crunchifyConn;

        

【问题讨论】:

【参考方案1】:

确保您已安装 this 软件包。

【讨论】:

以上是关于无法从 AWS Lambda 连接到 AWS RDS MySql DB。 ClassNotFoundException:com.mysql.jdbc的主要内容,如果未能解决你的问题,请参考以下文章