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

如何配置安全组让EC2仅接受同VPC内Lambda的HTTP请求?

解决方案

核心修复步骤

  • 将Lambda代码中请求的EC2地址从公网IPv4改为EC2所在VPC的私有IPv4,同时修正URL格式错误(原代码中http://1.2.3.4/post:80的端口位置不正确,HTTP默认端口80可省略,正确格式应为http://[私有IP]/post)。

修正后的代码示例:

const postRequestData = { key1: value1, key2: value2 };
return new Promise((resolve, reject) => {
    fetch('http://10.0.1.XX/post', {   // 替换为EC2的私有IPv4地址
        method: 'post',
        body: JSON.stringify(postRequestData),
        headers: {'Content-Type': 'application/json'}
    })
    .then((response) => {
        console.log("Response: ", response);
        resolve(response);
    })
    .catch(err => {
        console.log("ERROR: Could not fetch response: ", err);
        reject("EC2 unavailable.");
    });
});

问题原因分析

你当前的Lambda代码使用EC2公网IP发起请求,会导致流量从Lambda所在私有子网出发,经NAT网关绕至公网后再访问EC2公网IP。此时EC2收到的请求源IP是NAT网关的公网IP,而非Lambda安全组对应的内网IP,因此EC2安全组中允许Lambda安全组的规则无法匹配,请求被拦截超时。

当你将EC2安全组改为允许0.0.0.0/0时,公网来源的请求(包括经NAT网关转发的Lambda请求)会被放行,因此可以正常连接。

额外验证检查点

  1. 确认EC2与Lambda处于同一VPC的内网可达子网中(私有子网默认互通,只要路由表配置正确)
  2. 再次核对EC2安全组入站规则:
    • HTTP(80):来源为Lambda关联的安全组ID
    • SSH(22):来源为你的家庭IP
  3. Lambda安全组保持AllTraffic-0.0.0.0/0的出站规则即可,无需额外入站规则(Lambda是主动发起请求的一方)

内容的提问来源于stack exchange,提问作者Philip H

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 23:17:10