VPC内ECS调用Lambda未走接口端点,是否需添加路由?
Lambda VPC接口端点流量引导问题解答
核心结论
必须在私有子网的路由表中添加路由规则,将Lambda服务的流量引导至接口端点,否则ECS任务仍会走NAT/IGW的公网路径。
关键差异说明
Lambda接口端点和S3网关端点的路由逻辑完全不同:
- S3网关端点属于网关类型,创建时会自动在关联子网的路由表中插入前缀列表路由,强制流量走内部路径。
- Lambda接口端点是基于弹性网络接口(ENI)的,创建时仅会在关联的私有子网中生成ENI,但不会自动修改路由表。ECS任务默认会遵循私有子网的默认路由(指向NAT网关),去访问Lambda的公网域名,所以流量还是走公网,导致你配置的端点拒绝策略无法生效。
具体操作步骤
- 获取Lambda服务的前缀列表:
在VPC控制台的「前缀列表」页面,找到名称为com.amazonaws.<你的区域>.lambda的条目,记录其ID(格式为pl-xxxxxx);也可以通过AWS CLI执行以下命令查询:aws ec2 describe-prefix-lists --filters "Name=prefix-list-name,Values=com.amazonaws.*.lambda" - 修改私有子网路由表:
编辑ECS任务所在私有子网的路由表,添加一条新路由:- 目标:填入上述Lambda前缀列表ID
- 目标类型:选择「前缀列表」
- 下一跳:选择你创建的Lambda接口端点(控制台会自动关联对应的ENI)
- 确认安全组规则:
- 确保ECS任务所在安全组允许出站到Lambda接口端点安全组(你的默认安全组)的443端口
- 确保Lambda接口端点的安全组允许来自ECS任务安全组的443端口入站
验证方式
添加路由后再次测试Lambda调用:如果端点的拒绝策略生效(调用失败),说明流量已切换至VPC内部的接口端点;若允许策略生效且调用成功,则确认流量不再经过公网。
内容的提问来源于stack exchange,提问作者tailaiw
相关产品推荐
相关产品推荐

