Не получается никаких результатов от AWS RDS при звонке с лямбда-узла - PullRequest
0 голосов
/ 22 ноября 2018

Мне нужна помощь.Я весь день крутил свои диски, читая stackechange, и до сих пор не могу это взломать.

У меня есть безсерверная БД AWS RDS и она работает.Я знаю, что он есть, поскольку я подключился к нему через настройку экземпляра EC2 со своего рабочего стола (именно тогда я настраивал все необходимые таблицы и данные).

Я сейчас пытаюсь подключиться к нему и запустить что-либо, используя лямбду, написанную в узле (который я изучаю).

Код, который я получил, таков:

exports.handler = async (event, context) => {

var mysql = require('mysql');
console.log('Making connection');

var con = mysql.createConnection({
  host: "XXXXXXXXXXXXXXXX.amazonaws.com",
  user: "xxxxx",
  password: "xxxxxx",
  database: "xxxxxx"
});

console.log('About to query');
con.query('SELECT * FROM players', function(error, results, fields) {
  console.log('Query has run');
  console.log('Row Details:', JSON.stringify(results));
  context.succeed(JSON.stringify(results));
});

};

Но для жизни я не вижу результата, возвращающегося.Я получаю такие вещи в журналах Cloudwatch:

START RequestId: a1e383cc-ee70-11e8-aac6-51ba776a3581 Version: $LATEST
2018-11-22T16:06:55.667Z    a1e383cc-ee70-11e8-aac6-51ba776a3581    Making connection
2018-11-22T16:06:56.356Z    a1e383cc-ee70-11e8-aac6-51ba776a3581    About to query
END RequestId: a1e383cc-ee70-11e8-aac6-51ba776a3581
REPORT RequestId: a1e383cc-ee70-11e8-aac6-51ba776a3581  Duration: 769.66 ms Billed Duration: 800 ms Memory Size: 128 MB Max Memory Used: 24 MB
START RequestId: be7f1fbd-ee70-11e8-981b-c1b991028291 Version: $LATEST
2018-11-22T16:07:43.497Z    a1e383cc-ee70-11e8-aac6-51ba776a3581    Query has run
2018-11-22T16:07:43.515Z    a1e383cc-ee70-11e8-aac6-51ba776a3581    Row Details: undefined
2018-11-22T16:07:43.535Z    be7f1fbd-ee70-11e8-981b-c1b991028291    Making connection
2018-11-22T16:07:43.535Z    be7f1fbd-ee70-11e8-981b-c1b991028291    About to query
END RequestId: be7f1fbd-ee70-11e8-981b-c1b991028291

Я думаю, что в БД делается вызов, поскольку я не вижу ошибок.

Я звоню изПроверьте функцию на консоли AWS Lambda, и я предполагаю, что должен увидеть, что некоторые JSON возвращаются как тело вызова.Однако все, что я получаю, это "null"

Я предполагаю, что не вижу результатов из-за асинхронной природы вызова.Но все, что я читал, говорит мне, что код должен работать и должен ждать ответа на вызов, или, по крайней мере, должен быть в течение времени жизни этого вызова.

Я полностью застрял.Если кто-нибудь может дать мне подсказку или указать мне на веб-страницу, объясняющую, как заставить это работать, я был бы ОЧЕНЬ ОЧЕНЬ благодарен.

1 Ответ

0 голосов
/ 23 ноября 2018

Это происходит из-за сочетания async-await и неасинхронного кода ожидания.Наименьшее изменение, которое вы можете внести, чтобы исправить это, - удалить ключевое слово async перед подписью функции-обработчика, например:

exports.handler = (event, context) => {

Если вы все еще хотите использовать асинхронные функции,вам придется обновить код запроса mysql, используя обходной путь, указанный здесь: https://github.com/mysqljs/mysql/issues/1755#issuecomment-345459882

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...