【问题标题】:AWS Lambda + Nodejs + MySQLAWS Lambda + Nodejs + MySQL
【发布时间】:2019-10-13 06:18:40
【问题描述】:

我正在编写一个简单的 lambda 代码来向 mysql 表 (rds) 插入一些值,但我不知道它为什么不起作用。在重复尝试后有时它会起作用,随后的尝试再次停止工作

每次失败(不插入表格)我都会得到以下响应

Response:
null

Request ID:
"6814c4b8-65c5-4401-b7c1-ae06426f186c"

Function Logs:
START RequestId: 6814c4b8-65c5-4401-b7c1-ae06426f186c Version: $LATEST
END RequestId: 6814c4b8-65c5-4401-b7c1-ae06426f186c
REPORT RequestId: 6814c4b8-65c5-4401-b7c1-ae06426f186c  Duration: 317.80 ms Billed Duration: 400 ms     Memory Size: 128 MB Max Memory Used: 75 MB  

我插入数据或查询数据的代码很简单

const mysql = require('mysql');
const con = mysql.createConnection({
  host     : process.env.RDS_HOSTNAME,
  user     : process.env.RDS_USERNAME,
  password : process.env.RDS_PASSWORD,
  port     : process.env.RDS_PORT,
  database : process.env.RDS_DATABASE
});
exports.handler = (event, context, callback) => {
  // allows for using callbacks as finish/error-handlers
  context.callbackWaitsForEmptyEventLoop = false;
  const sql = "INSERT INTO MESSAGE (message) VALUES ('I am MySQL')";
  con.query(sql, (err, res) => {
    if (err) {
      throw err
    }
    callback(null, '1 records inserted.');
  })
};

我已经仔细检查了安全组设置,它似乎是正确的

我一直在说

`` https://medium.com/@hk_it_er/create-lambda-and-api-gateway-nodejs-aws-serverless-to-rds-mysql-6a75243e61cc

``

关于什么是错的或我应该检查什么的任何指针?

P.S:在 100 次尝试后的一天内,我成功地插入了 3 行具有相同代码和设置的行。

【问题讨论】:

  • 您在日志中发现了什么?
  • 您的 lambda 处理程序在查询可以运行之前退出,因为查询是异步的...看看上面链接的其他 Q...我认为使用 util.promisifyasync/@ 987654327@ 关键字应该可以帮助您假设您使用的是最新版本的节点

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


【解决方案1】:

问题出在节点 v 10 上。我切换到节点 8,它似乎可以轻松工作。猜测节点 10 进行了一些异步调用。

【讨论】:

    猜你喜欢
    • 2021-02-20
    • 2017-12-25
    • 2017-07-24
    • 2017-07-13
    • 2020-07-16
    • 2021-09-13
    • 1970-01-01
    • 1970-01-01
    • 2021-03-19
    相关资源
    最近更新 更多