我在同一VPC中具有EC2和LAMBDA。 EC2正在运行Web服务器,我只希望通过我的lambda(and SSH)访问它,因此我将EC2安全组设置为Inbound Rule http-tcp-tcp-80-lambdasecurityGroup(和SSH-TCP-22-MYHOMEIP)。

问题描述 投票:0回答:0

当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."); }); });

  • 使用公共EC2 IP的问题不是吗?
  • 当您使用公共IP时,Lambda功能将退出VPC。 因此,在VPC中,使用私有IP进行通信通常更有效,更有效。
node.js amazon-web-services amazon-ec2 aws-lambda
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.