我正在尝试编写我的第一个lambda函数并使用我的MySQL数据库。数据库的凭据是正确的,并且都在同一子网中。该功能的目的是显示所有表格。这是我的Node.js 10.x脚本:
// Request 10 connections.
ListConnectionsResponse response2 = peopleService.people().connections()
.list("people/me")
.setSyncToken(response.getNextSyncToken())
.setPageSize(10)
.setPersonFields("names,emailAddresses")
.execute();
错误看起来像这样:
{ “ errorType”:“字符串”, “ errorMessage”:“已处理”, “跟踪”:[] }
有人能想象出什么问题吗?
答案 0 :(得分:1)
AFAIK lambda处理程序应为async
函数或接受callback
。给定您的代码,使其更容易接受callback
。
'use strict';
console.log("Loading controls function");
const AWS = require('aws-sdk');
const mysql = require('mysql');
exports.handler = (event, context, callback) => {
const connection = mysql.createConnection({
host: process.env.RDS_HOST,
user: process.env.RDS_USER,
password: process.env.RDS_PASSWORD,
database: process.env.RDS_DATABASE
});
connection.query('select * from controls;', function (error, results, fields) {
if(error) {
context.fail();
return callback(null, { statusCode: 500, body: JSON.stringify(error) });
}
context.succeed('Success');
callback(null, { statusCode: 200, body: JSON.stringify(results) });
});
};
答案 1 :(得分:0)
我要花点时间猜测您尚未为Lambda函数配置VPC设置。您会看到,默认情况下,Lambda实际上并未获得您所关注的IP或安全组。因此,默认情况下,它实际上无法与您的VPC中的任何内容进行通信。
转到Lambda,转到VPC设置,并确保将Lambda配置为在VPC的子网中运行,并为其提供一个安全组,使其能够访问数据库。