Я пытаюсь запросить некоторые данные из экземпляра AWS RDS Mysql, обработать их и вернуть через API-шлюз. Мой общий поток процесса: API Gateway -> Lambda -> RDS MySql
Мой код следует следующим logi c:
const AWS = require('aws-sdk');
const mysql = require('mysql');
const connection = mysql.createPool({
host: process.env.RDS_LAMBDA_HOSTNAME,
user: process.env.RDS_LAMBDA_USERNAME,
password: process.env.RDS_LAMBDA_PASSWORD,
port: process.env.RDS_LAMBDA_PORT,
});
exports.handler = (event, context,callback) => {
var sql_query = 'SELECT * from Table';
connection.query(sql_query, function (err, result) {
if (err) {
console.log("Error->" + err);
}
else
{
result = do_some_processing(result);
var response = {
statusCode: 200,
body: result };
connection.end();
callback(null,result);
}
});
};
Фактический sql_query немного более сложный и должен быть сформирован вот так.
Я добавил несколько операторов console.log (), чтобы убедиться, что объект ответа формируется и печатается правильно. При тестировании функции лямбда я вижу правильный ответ. Однако при запуске той же функции из API Gateway я не получаю обратно никаких данных.
Следуя различным инструкциям в Интернете, я дал все возможные разрешения, необходимые для этого (роль VP C, роль RDS и т. Д. c.).
Кроме того, я пытался сохранить Лямбда и RDS в одной группе безопасности, а также в разных группах безопасности. Результаты остаются прежними.
Это кажется довольно простым вариантом использования, но я не могу получить никакого ответа.