AWS Lambda错误-“ errorType”:“字符串”,“ errorMessage”:“已处理”

时间:2019-11-27 14:59:08

标签: node.js amazon-web-services error-handling aws-lambda

我正在尝试编写我的第一个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”:“已处理”,   “跟踪”:[] }

有人能想象出什么问题吗?

2 个答案:

答案 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的子网中运行,并为其提供一个安全组,使其能够访问数据库。