AWS Lambda连接到mysql但查询超时(JavaScript)

y0u0uwnf  于 2023-06-20  发布在  Java
关注(0)|答案(1)|浏览(117)

我正在使用AWS CDK部署以下Lambda代码。它不会调用lambda和安全组配置中的任何更改。但这在一个月前还是有用的。现在是连接到DB后的计时。
它连接到数据库,但随后不执行create database查询。然后打印超时异常。

const client = require("mysql2");

exports.handler = async (event) => {
  const fn = new Promise((resolve, reject) => {
    const con = client.createConnection({
      host: process.env.host,
      user: process.env.user,
      password: process.env.password,
      port: 3306,
    });

    con.connect(function (err) {
      if (err) {
        console.error(
          `Could not connect to db; host -> ${process.env.host} , user -> ${process.env.user}.`
        );
        return err;
      } else {
        console.log("Connected!");

        con.query(
          `CREATE DATABASE IF NOT EXISTS ${process.env.dbName} CHARACTER SET utf8mb4 COLLATE utf8mb4_bin`,
          function (err, result) {
            if (err) {
              console.error(`DB not created: ${process.env.dbName}.`);
              console.log(result);
              return err;
            }
            console.log(`Database created: ${process.env.dbName}.`);
          }
        );
      }
    });
  });
  return fn
    .then((e) => {
      console.log("successful");
      console.log(e);
    })
    .catch((e) => {
      console.error(e);
      throw e;
    });
};

以日志形式输出

INIT_START Runtime Version: nodejs:16.v14 Runtime Version ARN: arn:aws:lambda:us-east-1::runtime:699b51cc1e44cad9b43e446b3b6f7e0834a78366955dc81cc7b459b0aa3f9175
START RequestId: 983e51b1-0d2f-4d6f-874b-cedf02e5c273 Version: 1
2023-06-16T07:50:04.340Z 983e51b1-0d2f-4d6f-874b-cedf02e5c273 INFO Connected!
2023-06-16T07:50:04.379Z 983e51b1-0d2f-4d6f-874b-cedf02e5c273 ERROR DB not created: 9e58a85f07a54784bc7f6542d29d9343.
2023-06-16T07:50:04.380Z 983e51b1-0d2f-4d6f-874b-cedf02e5c273 INFO undefined
2023-06-16T07:51:04.065Z 983e51b1-0d2f-4d6f-874b-cedf02e5c273 Task timed out after 60.06 seconds
END RequestId: 983e51b1-0d2f-4d6f-874b-cedf02e5c273
REPORT RequestId: 983e51b1-0d2f-4d6f-874b-cedf02e5c273 Duration: 60062.80 ms Billed Duration: 60000 ms Memory Size: 128 MB Max Memory Used: 75 MB Init Duration: 268.90 ms

可能是什么原因造成的?

p5fdfcr1

p5fdfcr11#

这是我的错但这实际上可能发生在任何人身上,因此我对自己的问题给出了答案。在我把这个问题贴在这里之后,一个队友指出了这一点。
MySQL允许字母数字DB名称,只要它不应该以数字开头。我们以编程方式生成dbname,这里生成的随机名称开头有一个数字。这就造成了麻烦。
现在我们在每个生成的名称前面加上一个字母前缀字符串。

相关问题