[英]How can I query a MySQL database that is outside AWS, using AWS Lambda (nodeJS)?
我無法從 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 中運行,那么您將能夠訪問它。
否則,端點將必須可通過 Internet 訪問。 我會嘗試從 Lambda 內部 ping 您的數據庫端點,看看是否有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.