node.js - 如何使用 AWS Lambda (nodeJS) 查询 AWS 外部的 MySQL 数据库?
问题描述
我无法从 AWS Lambda 访问外部数据库,这真的可能吗?难道我做错了什么?
(我已经在本地通过 npm 安装了 mysql 并将带有模块的 .zip 导入控制台)
谢谢!
var mysql = require('mysql');
var config = require('./config.json');
var pool = mysql.createPool({
host: config.dbHost,
user: config.dbUser,
password: config.dbPassword,
database: config.dbName
})
exports.handler = (event,context,callback) => {
context.callbackWaitsForEmptyEventLoop = false;
pool.getConnection(function(error,connection){
connection.query(`SELECT * from dot LIMIT 10`,function (error,results,fields){
connection.release();
if (error) callback(error);
else callback(null,results);
});
});
};
我得到以下回复:
{
"errorType": "TypeError",
"errorMessage": "Cannot read property 'query' of undefined",
"trace": [
"TypeError: Cannot read property 'query' of undefined",
" at /var/task/index.js:18:21",
" at Handshake.onConnect (/var/task/node_modules/mysql/lib/Pool.js:58:9)",
" at Handshake.<anonymous> (/var/task/node_modules/mysql/lib/Connection.js:526:10)",
" at Handshake._callback (/var/task/node_modules/mysql/lib/Connection.js:488:16)",
" at Handshake.Sequence.end (/var/task/node_modules/mysql/lib/protocol/sequences/Sequence.js:83:24)",
" at Protocol.handleNetworkError (/var/task/node_modules/mysql/lib/protocol/Protocol.js:369:14)",
" at PoolConnection.Connection._handleNetworkError (/var/task/node_modules/mysql/lib/Connection.js:418:18)",
" at Socket.emit (events.js:376:20)",
" at emitErrorNT (internal/streams/destroy.js:106:8)",
" at emitErrorCloseNT (internal/streams/destroy.js:74:3)"
]
}
解决方案
此端点是否在您的 AWS 账户中?如果是这样,并且您的 MYSQL 数据库位于 VPC 中,那么如果您将 Lambda 配置为在同一 VPC 中运行,那么您将能够访问它。
否则,端点必须可以通过互联网访问。我会尝试从 Lambda 内部 ping 您的数据库端点,看看是否可行。
推荐阅读
- python - 使用 format 方法打印一个整洁的乘法表
- javascript - 异步等待调用后反应状态不更新
- rest - “删除自己的帐户”的 REST api 路由
- mysql - MediaWiki Docker 官方图片 - MySQL 拒绝连接
- sql - ORACLE SQL - 如何找到每位教师在教师辞职前 2 个月内每天获得的救济数量?
- java - 如何获取 JTable 中所有行的值并用分隔符和换行符拆分它们?
- flutter - 如何更改 Sliver Persistent Header 的固定
- c++ - 参考文献输出混乱,如何分析?
- python - 如何在 python 中制作数据包嗅探器?
- php - **已解决** 从 mysql 列中获取数据到数组并在需要时单独选择它