You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Lambda连接Aurora MySQL V3.01.0并查询数据?

从Lambda连接Aurora MySQL V3.01.0的可行方案(Typescript)

直接通过VPC网络连接(替代废弃的Data API)

现在Data API已不再推荐使用,直接通过VPC网络连接是当前适配Aurora MySQL V3的标准方案:

  • 将Lambda部署到Aurora所在的VPC(或通过VPC peering打通网络),确保网络可达。
  • 配置安全组:
    • Aurora安全组开放3306端口,允许Lambda所在安全组的入站流量。
    • Lambda安全组允许出站到3306端口。
  • 给Lambda添加AWSLambdaVPCAccessExecutionRole权限策略,确保它能访问VPC内的网络资源。

Typescript代码示例(使用mysql2库)

用mysql2这个活跃维护的MySQL客户端库,支持Promise和Typescript,代码如下:

import * as mysql from 'mysql2/promise';

// 从环境变量读取配置,避免硬编码敏感信息
const dbConfig = {
  host: process.env.DB_HOST,
  user: process.env.DB_USER,
  password: process.env.DB_PASSWORD,
  database: process.env.DB_NAME,
  port: 3306,
  // 适配Burstable实例的连接配置
  connectTimeout: 10000,
  waitForConnections: true,
  connectionLimit: 2, // 控制连接数,避免Burstable实例CPU过载
  queueLimit: 0
};

// 创建连接池,复用连接提升Lambda执行效率
const pool = mysql.createPool(dbConfig);

export const handler = async (event: any) => {
  let connection;
  try {
    connection = await pool.getConnection();
    // 替换成你的目标查询语句
    const [rows] = await connection.execute('SELECT * FROM your_target_table LIMIT 10');
    return {
      statusCode: 200,
      body: JSON.stringify({ data: rows })
    };
  } catch (error) {
    console.error('数据库查询出错:', error);
    return {
      statusCode: 500,
      body: JSON.stringify({ error: '查询数据库失败' })
    };
  } finally {
    // 释放连接回池,避免资源泄漏
    if (connection) connection.release();
  }
};

关键注意事项

  • 敏感信息管理:不要把数据库密码硬编码在代码里,优先用Lambda环境变量存储,或者用AWS Secrets Manager动态获取(需给Lambda添加对应权限)。
  • Burstable实例优化:这类实例CPU有积分限制,连接池的connectionLimit不要设太高,避免瞬间高并发导致CPU耗尽、连接超时。
  • 冷启动优化:VPC内的Lambda冷启动时间会更长,如果对延迟敏感,可以开启Lambda预留并发。
  • 权限检查:Lambda执行角色除了VPC访问权限,若用Secrets Manager,还需要secretsmanager:GetSecretValue权限;同时要有logs:CreateLogStream、logs:PutLogEvents权限用于日志输出。

内容的提问来源于stack exchange,提问作者Karim Fayed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 20:10:25