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

Lambda通过Data API访问无服务器数据库集群时触发BadRequestException

问题分析与调试方向

首先明确:Lambda与无服务器RDS集群不需要在同一VPC。RDS Data API是通过AWS管理平面的API调用,而非直接连接数据库端口,因此无需额外VPC网络配置(除非你的Secrets Manager或RDS集群配置了VPC端点,但本地CLI能成功的话,大概率不是这个问题)。

针对你遇到的BadRequestException,按以下方向排查:

1. 核对API动作与权限匹配

你本地CLI使用的是aws rds-data execute-statement命令,对应IAM权限动作是rds-data:ExecuteStatement;但Lambda代码中使用的是ExecuteSqlCommand,对应权限动作是rds-data:ExecuteSql。即使测试用户和Lambda角色权限“相同”,也要确认Lambda角色是否明确包含rds-data:ExecuteSql权限——如果只给了rds-data:ExecuteStatement,就会因为权限不匹配触发错误(部分场景下会表现为BadRequest而非直接AccessDenied)。

2. 检查ARN参数的有效性

你的CLI命令中,Secret ARN存在一个明显的空格:arn:aws:secretsmanager:eu-central-1: xxxxxxxxxxx:secret:...(账号ID前有空格)。如果Lambda代码中的awsSecretStoreArn也包含这个空格,会导致ARN格式无效,直接触发BadRequest。务必确保所有ARN参数无多余空格、格式完全正确。

3. 核对SDK参数与API要求

AWS SDK v3中,ExecuteSqlCommand的参数结构与ExecuteStatementCommand有差异:

  • ExecuteSqlCommand使用sqlStatements参数(支持多条SQL用分号分隔)
  • ExecuteStatementCommand使用sql参数(单条SQL)
    确认你使用的命令与参数匹配,同时检查其他参数名是否符合SDK要求(例如部分版本中dbClusterOrInstanceArn是否应为dbClusterArn)。

4. 查看CloudWatch日志获取详细错误信息

你提供的错误仅包含基础结构,Lambda的CloudWatch日志中通常会记录BadRequestException的具体message(例如“无效的ARN”“无法获取凭证”等)。前往CloudWatch控制台查看该Lambda的执行日志,获取更精准的错误原因。

5. 验证Secrets Manager访问权限

RDS Data API需要从Secrets Manager中读取数据库凭证,因此Lambda角色除了rds-data权限外,必须具备secretsmanager:GetSecretValue权限(针对目标Secret ARN)。即使测试用户有这个权限,也要确认Lambda角色的权限策略中是否包含该动作。

6. 确认无服务器集群状态

如果你的RDS无服务器集群处于暂停状态,调用Data API会触发BadRequest。前往RDS控制台检查集群状态是否为“可用”。

内容的提问来源于stack exchange,提问作者Max Luchterhand

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 08:54:21