ошибка времени ожидания при бездействии рукопожатия в aws лямбда и Rds - PullRequest
1 голос
/ 09 июля 2020

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
  });

  module.exports.handler = (event, context, callback) => {
    //prevent timeout from waiting event loop
    context.callbackWaitsForEmptyEventLoop = false;
    pool.getConnection(function(err, connection) {
      // Use the connection
      if(err){
        return callback(err,null);
      }
      connection.query("Select * from allBlogs", function (error, results, fields) {
        connection.release();
        // Handle error after the release.
        console.log(results);
        var len = results.length;
        var i = 0;
        for(i ; i < len; i++) {
          var tagArray = results[i].tag.split(",");
          results[i].tag = tagArray;
          tagArray = [];
        };
        if (error) {callback( {statusCode: 400, headers: { "Access-Control-Allow-Origin": "*" }, body: JSON.stringify(error)} ,null)}
        else {
        callback(null, { statusCode: 200, headers: { "Access-Control-Allow-Origin": "*" }, body: JSON.stringify(results) });
        }
        });
    });
  };

Я использую Aws лямбда, шлюз API и базу данных RDS, но я столкнулся с ошибкой бездействия рукопожатия. Ниже приведен мой код, написанный на node.js

1 Ответ

0 голосов
/ 09 июля 2020

Поскольку лямбда находится в VP C, вероятная причина тайм-аута при попытке подключения к RDS заключается в том, что лямбда-функция в VP C не имеет inte rnet доступа ни publi c ip . From docs :

Подключение функции к publi c su bnet не дает ей доступа inte rnet или publi c IP-адреса.

Поскольку вопрос не содержит ни подробностей VP C, ни специфики настройки RDS, следует отметить, что если ваш RDS не находится в VP C, ваша лямбда не сможет подключиться к publi c RDS без шлюза NAT .

С другой стороны, если RDS находится в другом VP C, тогда пиринговое соединение между два VP C могут быть установлены для включения взаимодействия между вашей лямбда-функцией и RDS.

...