簡體   English   中英

如何使用 AWS Lambda (nodeJS) 查詢 AWS 外部的 MySQL 數據庫?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM