如何让关联VPC的Lambda同时访问DynamoDB与公网API?
解决方案
未关联VPC时无法访问公网API的排查点
未关联VPC的Lambda默认具备公网访问能力,无法调用公网API通常是以下两种情况:
- 执行角色或SCP限制:检查Lambda执行角色的权限策略,确认没有被服务控制策略(SCP)或IAM策略阻止出站网络请求。
- 目标API的IP白名单限制:目标公网API可能设置了IP白名单,Lambda的出口IP不在列表内。可以在Lambda中添加代码调用
curl https://checkip.amazonaws.com获取出口IP,将其加入API白名单。
关联私有子网后同时访问DynamoDB与公网API的配置步骤
Lambda部署在私有子网时,默认无公网出口,需按以下配置:
- 配置DynamoDB VPC网关端点
在VPC控制台创建DynamoDB的网关型端点,关联Lambda所在的私有子网。此配置让Lambda通过私有网络访问DynamoDB,无需走公网。 - 部署NAT网关并配置路由
- 在VPC的公有子网中创建NAT网关,绑定弹性IP。
- 编辑Lambda所在私有子网的路由表,添加
0.0.0.0/0的路由条目,目标指向NAT网关。这样Lambda的公网请求会通过NAT网关转发到互联网。
- 检查安全组与网络ACL
- Lambda的安全组需允许出站HTTPS流量(端口443):既包括到DynamoDB端点的流量,也包括到公网的流量。
- 若私有子网配置了自定义网络ACL,需允许对应的出站(443端口)和入站(NAT网关返回的流量)规则。
验证方法
- 保留原有DynamoDB交互逻辑,确认仍能正常获取记录。
- 添加简单的公网API请求代码(如调用
https://httpbin.org/get),查看CloudWatch日志中的响应结果,确认请求成功。
内容的提问来源于stack exchange,提问作者side kikk
相关产品推荐
相关产品推荐

