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

如何排查VPC内Lambda与VPC外Lambda的连通性问题(Reachability Analyzer不支持)

VPC内公有子网Lambda调用外部Lambda故障排查指南

核心结论

VPC内公有子网的Lambda调用VPC外Lambda不需要配置VPC接口端点。公有子网的Lambda默认可通过Internet Gateway(IGW)访问AWS Lambda公共服务端点,故障通常源于网络配置、IAM权限或调用细节问题。

分步排查步骤

1. 验证网络出口连通性

  • 检查子网路由表:确认公有子网关联的路由表存在0.0.0.0/0指向IGW的路由,未被NAT网关或其他路由覆盖
  • 检查Lambda安全组:出向规则需允许**HTTPS(443端口)**访问0.0.0.0/0,或更严格限制到AWS Lambda的服务前缀列表(可通过aws ec2 describe-prefix-lists --prefix-list-name com.amazonaws.<区域>.lambda查询)
  • 临时网络测试:在VPC内Lambda代码中添加简单HTTPS请求(如调用https://httpbin.org/get),确认能正常获取响应,排除基础网络不通问题

2. 确认IAM权限有效性

  • 检查执行角色权限:VPC内Lambda的执行角色必须包含lambda:InvokeFunction权限,资源需指定目标Lambda的ARN(或通配符*用于测试)
  • 排查限制策略:检查是否存在IAM权限边界、组织SCP(服务控制策略)或资源级Deny规则,阻止了Lambda调用操作
  • CLI权限验证:使用目标角色临时凭证执行调用测试:
    aws lambda invoke \
      --function-name <目标Lambda函数名/ARN> \
      --invocation-type RequestResponse \
      --role-arn <VPC内Lambda执行角色ARN> \
      output.txt
    
    若报错则直接定位权限问题

3. 捕获调用错误细节

  • 代码级错误捕获:在调用代码中添加详细异常处理,以Python为例:
    import boto3
    import botocore
    
    lambda_client = boto3.client('lambda')
    try:
        response = lambda_client.invoke(
            FunctionName='目标Lambda名称',
            InvocationType='RequestResponse'
        )
        print(response)
    except botocore.exceptions.ClientError as e:
        print(f"调用错误: {e.response['Error']}")
    
  • 查看CloudWatch日志:进入Lambda控制台→目标函数→监控→日志,检查是否有超时、权限拒绝(AccessDeniedException)或网络超时(ConnectTimeoutError)等明确错误
  • 检查目标Lambda状态:确认目标函数处于活跃状态,未触发并发限制,自身代码无执行错误

4. 特殊场景排查

  • 若使用NAT网关:确认NAT网关状态正常(无故障),且子网路由表的0.0.0.0/0路由指向NAT网关(仅私有子网需要,公有子网优先用IGW)
  • 检查VPC网络ACL:确保出向规则允许443端口流量,入向规则允许TCP临时端口(1024-65535)的返回流量

常用排查工具

AWS Console工具

  • Lambda控制台:查看函数VPC配置、安全组关联、执行角色,监控页面的错误/调用指标,日志页面的实时执行日志
  • IAM控制台:检查执行角色的权限策略、权限边界、信任关系,验证角色是否能被Lambda服务 Assume
  • VPC控制台:查看子网路由表规则、安全组出入向规则、网络ACL配置、IGW/NAT网关状态

AWS CLI工具

  • aws lambda get-policy --function-name <目标Lambda>:查看目标函数的资源策略,确认是否允许调用方访问
  • aws ec2 describe-security-groups --group-ids <Lambda安全组ID>:导出安全组规则,快速校验出入向权限
  • aws ec2 describe-route-tables --route-table-ids <子网路由表ID>:查看路由表的具体路由条目
  • aws cloudwatch logs filter-log-events --log-group-name <Lambda日志组名> --filter-pattern "Error":批量过滤错误日志

其他工具

  • Lambda测试事件:在控制台直接创建测试事件触发VPC内Lambda,实时查看执行结果和日志输出
  • CloudWatch Insights:使用日志查询语句快速定位错误,示例:
    fields @timestamp, @message
    | filter @message like /AccessDenied|Timeout|Error/
    | sort @timestamp desc
    | limit 20
    

内容的提问来源于stack exchange,提问作者John Smith

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 11:40:24