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

AWS Lambda(Java)无法连接Parameter Store问题求助

排查私有子网中Lambda访问SSM Parameter Store超时的问题

看起来你的Lambda运行在私有子网中,虽然已经开放了安全组和NACL的所有规则,但还是遇到了连接SSM服务超时的问题——这大概率是私有子网的网络路由配置问题,因为私有子网默认没有直接访问公网的能力,我帮你梳理几个核心排查方向:

1. 检查私有子网的路由表是否配置了NAT网关

私有子网内的资源要访问公网(比如SSM的公网端点),必须通过NAT网关转发。你需要:

  • 确认你的VPC中已经创建了NAT网关(注意NAT网关要部署在公有子网)
  • 检查Lambda所在私有子网的路由表,是否存在一条0.0.0.0/0的路由,目标指向你的NAT网关
    如果这条路由缺失,Lambda就无法通过公网访问SSM服务,自然会超时。

2. 考虑使用SSM的VPC端点(无需公网)

如果不想依赖NAT网关,你可以创建SSM的Interface类型VPC端点,这样Lambda可以在VPC内部直接和SSM服务通信,完全不需要走公网。配置要点:

  • 在VPC中创建针对ssm.eu-central-1.amazonaws.com的Interface端点
  • 确保端点和Lambda所在子网关联,并且路由表中添加了指向该端点的路由
  • 安全组允许Lambda访问端点的443端口

3. 验证子网的公有/私有属性

有时候可能会误将Lambda部署到没有IGW的公有子网,或者私有子网的路由配置错误。你可以:

  • 检查子网的路由表,如果是公有子网,应该有指向Internet Gateway(IGW)的0.0.0.0/0路由;如果是私有子网,应该指向NAT网关
  • 确认Lambda的网络配置中,确实选择了正确的私有子网

顺便提个代码小优化

虽然这不是超时的原因,但你的代码中获取密码的方式可能有问题:

// 原代码
password = parameterResult.getParameter().toString();
// 正确的取值方式应该是
password = parameterResult.getParameter().getValue();

toString()会返回Parameter对象的字符串表示,而不是存储的密码值,用getValue()才能拿到实际的参数内容。

内容的提问来源于stack exchange,提问作者CC.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:39:43