当i(使用AWS控制台的测试)运行我的lambda时,它不会连接到EC2(10-11秒后乘坐)。
但是,如果我更改EC2安全组以允许入站HTTP-TCP-80-0.0.0.0.0/0(任何地方IPv4),则所有内容都可以按预期工作(EC2 Web Server接收lambda请求和答复)。但是,我当然不想向整个公众开放我的EC2 Web服务器,所以我可以让我的ec2只允许http(post)请求来自我的lambda? Reasoning / Debugging: 当Lambda在后者允许所有入站流量时成功地达到EC2,并且由于Lambda可以访问其他在线资源,因此我认为问题不可能是我的VPC,NAT Gateway等。 I双重检查Lambda的配置> VPC,并显示其具有正确的lambdasecurityGroup。 EC2还需要其他任何需要识别这些请求的东西吗? I尝试将EC2 lambda的入站规则修改为AllTraffic-All-LambdasecurityGroup,但这仍然失败。 i我向lambdasecuritygroup添加了一条规则,允许所有入站流量,并且正如预期的那样,这仍然失败。
写所有这一切,我想知道在AWS控制台的测试中运行是否会改变任何东西。我将尝试在生产中运行并相应地更新此行...行为详细信息:
我的EC2仅是IPv4。 相关lambda代码的excerpt:
const postRequestData = { key1: value1, key2: value2 };
return new Promise((resolve, reject) => {
fetch('http://1.2.3.4/post:80', { // Note: uses EC2 public IPv4 address
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.");
});
});