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

Lambda执行角色无RDS Proxy权限致超时,请求排查

问题排查与修复方案

1. 修正Lambda IAM角色的rds-db:connect权限配置

你当前给Lambda角色配置的rds-db:connect权限用了通配符*作为Resource,AWS对这个权限的Resource有严格格式要求,通配符无法被正确解析。必须指定具体的RDS Proxy资源ARN,格式如下:

iam:
  role:
    statements:
      - Effect: "Allow"
        Action:
          - rds-db:connect
        Resource: "arn:aws:rds-db:<你的AWS区域>:<你的账号ID>:dbproxy:<你的Proxy名称>/*"
      - Effect: "Allow"
        Action:
          - secretsmanager:GetSecretValue
        Resource: "<你的ProxySecret的ARN>" # 替换为实际Secret的ARN,别用通配符

替换占位符为你实际的AWS区域、账号ID、Proxy名称和Secret ARN,同时把secretsmanager:*缩小为GetSecretValue,遵循最小权限原则,避免过度授权。

2. 排查Lambda的VPC网络连通性(超时核心原因)

超时问题基本都是网络不通导致的,重点检查:

  • Lambda必须部署在RDS Proxy所在的VPC子网里,否则根本连不到Proxy
  • Lambda的安全组要允许出站访问5432端口(PostgreSQL默认端口,你的Proxy用的就是这个)
  • 确认VPC路由表:Lambda所在子网的路由表要能到达Proxy所在子网(同一VPC内默认连通,但若有自定义路由规则需验证)

3. 验证RDS Proxy与数据库的关联状态

  • 去AWS控制台查看RDS Proxy的目标组(ProxyTargetGroup),确认RDS实例已被成功关联,且目标状态显示AVAILABLE
  • 直接测试RDS实例是否能正常连接,排除数据库本身的故障

4. 补全RDS Proxy角色的必要权限

你的RDSProxyRole目前只有secretsmanager:*权限,需要添加读取数据库实例的权限,否则Proxy无法获取数据库信息:

Policies:
  - PolicyName: "RDSProxyPolicy"
    PolicyDocument:
      Version: "2012-10-17"
      Statement:
        - Effect: "Allow"
          Action:
            - "secretsmanager:GetSecretValue"
          Resource: "<你的ProxySecret的ARN>"
        - Effect: "Allow"
          Action:
            - "rds:DescribeDBInstances"
          Resource: "<你的RDS实例ARN>"

5. 确认数据库用户的连接权限

确保ProxySecret里的masterpassword用户拥有连接目标数据库的权限,登录PostgreSQL执行:

GRANT CONNECT ON DATABASE <你的DBName> TO masterpassword;

修改完所有配置后,重新部署Lambda和相关AWS资源,再测试API网关触发的请求是否正常。

内容的提问来源于stack exchange,提问作者Leandro Hernández Mira

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 20:14:52