Невозможно подключить узел js express API, развернутый на AWS Lamda, к AWS RDS (My SQL) - PullRequest
0 голосов
/ 04 апреля 2019

Я развернул свое приложение js express на узле AWS Lamda и смог использовать метод API-маршрутизатора, такой как get, post и т. Д., Но когда я пытаюсь получить данные из amazon RDS, он возвращает ошибку 502 в консоли браузера и безВызов БД API хорошо возвращает жестко закодированный ответ.Я попытался подключить свой API на начальном этапе и использовал следующий код

var mysql = require('mysql');
    var pool = mysql.createPool({
    host: 'rds end point',
    user: 'xxxx',
    password: 'xxxx',
    database: 'TestDb'
});

exports.handler = (event, context,callback) => { 
    context.callbackWaitForEmptyEventLoop=false;
    pool.getConnection(function(err,connection) {
        connection.query("select count(*) as count from Classes", function(error,result,fields) {
            connection.release();
            if(error) callback(error);
            else callback(null,result[0].count)
        })
    })
}

, и в журнале консоли LAMDA я получаю сообщение об ошибке ниже, чем количество

"errorMessage": "2019-04-04T12: 06: 39.020Z 7ffa5ee4-4000-4254-82fc-27617eb9975a Тайм-аут задачи через 5,01 секунды "

Кто-нибудь может мне помочь в этом вопросе?

1 Ответ

0 голосов
/ 04 апреля 2019

Убедитесь, что RDS и Lambda находятся в одной группе безопасности, и для вашей лямбды требуется разрешение

  • AmazonRDSFullAccess
  • AWSLambdaFullAccess
  • AmazonVPCFullAccess
  • AWSLambdaExecute
  • AWSLambdaVPCAccessExecutionRole.
  • AWSLambdaVPCAccessExecutionRole

Если это в VPC, создайте новую группу безопасности VPC (для использования в лямбда-функциях).и добавьте входящее правило, которое принимает ВСЕ ДВИЖЕНИЯ для вашего VPC

Если вашей функции требуется сетевой доступ к ресурсу, например, к реляционной базе данных, которая нене доступны через API-интерфейсы AWS или Интернет, настройте его для подключения к вашему VPC.

...