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

配置Lambda函数连接RDS Proxy遇权限及超时问题求助

问题解决方案

一、权限问题修复

你收到的警告明确指向Lambda执行角色缺少RDS Proxy的访问权限,当前附加的AWSLambdaSQSQueueExecutionRole和AWSLambdaVPCAccessExecutionRole不包含RDS Proxy相关权限,需要补充以下配置:

  • 给Lambda执行角色(LambdaTest)添加自定义权限策略,核心权限如下:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": ["rds-db:connect"],
            "Resource": ["arn:aws:rds-db:你的区域:你的账号ID:dbuser:proxy-xxx/*"]
        }
    ]
}

替换其中的你的区域、你的账号ID和proxy-xxx为实际的RDS Proxy标识符。

  • 无需额外添加VPC相关权限,AWSLambdaVPCAccessExecutionRole已包含ec2:CreateNetworkInterface等必要操作。

二、Lambda代码问题修复

你的代码存在两个关键问题,这也是超时的重要诱因:

  1. 全局连接复用风险:Lambda执行环境会被复用,但createConnection在函数外部初始化,多次执行时易导致连接失效或异常。
  2. 异步操作未等待:connection.connect()是异步操作,未用await等待连接建立就执行查询,会引发未预期的错误或超时。

修复后的代码:

var mysql = require('mysql');

const dbConfig = {
 host: 'RDS_PROXY_ENDPOINT', // 注意:这里必须填RDS Proxy的端点,而非RDS实例地址
 user: 'user',
 password: 'password',
 port: XXXX,
 database: 'database',
 debug: false,
};

exports.handler = async (event, context) => {
 let connection;
 try {
    // 在handler内部创建连接,避免复用异常
    connection = mysql.createConnection(dbConfig);
    // 等待连接建立完成
    await new Promise((resolve, reject) => {
      connection.connect((err) => err ? reject(err) : resolve());
    });

    const query = 'SELECT * FROM Therapists';
    const results = await executeQuery(connection, query);

    return {
      statusCode: 200,
      body: JSON.stringify(results)
    };
  } catch (err) {
    return {
      statusCode: 500,
      error: err.message
    };
  } finally {
    // 确保无论成功失败都关闭连接
    connection?.end();
  }
}

// 传入当前连接,避免全局连接依赖
function executeQuery(connection, query) {
  return new Promise((resolve, reject) => {
    connection.query(query, (error, results) => {
      error ? reject(error) : resolve(results);
    });
  });
 }

三、额外检查项

  • 确认dbConfig.host使用的是RDS Proxy端点,而非RDS实例地址,否则未真正通过Proxy连接数据库。
  • 检查RDS Proxy安全组是否允许Lambda所在安全组的入站连接(端口为数据库端口)。
  • 延长Lambda超时时间至1分钟以上,同时确认RDS Proxy的连接超时配置合理。
  • 验证RDS Proxy目标组已关联正常运行的RDS实例。

内容的提问来源于stack exchange,提问作者Gwen Blainbridge

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 18:42:16