Amazon web services 如何通过nginx启用lambda函数访问EC2实例上的api
我创建了一个服务器,它使用nodejs程序提供api,并使用nginx作为反向代理。我已经设置了入站规则,以便只有特定的ip地址才能访问API 现在,我希望创建一个lambda函数,它可以访问ec2实例上的API。我已经将他们分配到同一个VPC和安全组。然而,当我调用lambda函数时,虽然我使用了try-catch块来处理错误,但还是得到了HTTP502响应Amazon web services 如何通过nginx启用lambda函数访问EC2实例上的api,amazon-web-services,nginx,amazon-ec2,aws-lambda,Amazon Web Services,Nginx,Amazon Ec2,Aws Lambda,我创建了一个服务器,它使用nodejs程序提供api,并使用nginx作为反向代理。我已经设置了入站规则,以便只有特定的ip地址才能访问API 现在,我希望创建一个lambda函数,它可以访问ec2实例上的API。我已经将他们分配到同一个VPC和安全组。然而,当我调用lambda函数时,虽然我使用了try-catch块来处理错误,但还是得到了HTTP502响应 const axios = require('axios'); const serializeError = require('seri
const axios = require('axios');
const serializeError = require('serialize-error');
module.exports.translate = async (event, context) => {
try {
const response = await axios.post("http://EC2-DOMAIN")
return { statusCode: 200 };
} catch( error ){
console.log(JSON.stringify(serializeError(error), null, 4));
return { statusCode: 400 };
}
};
我犯了什么错误吗?谢谢大家! 解决这个问题的方法是:
如果我正确理解您的配置,您可能只需要在安全组中添加一条规则,允许80(或运行api的任何端口)上的流量,将自身引用为源
同一安全组中的资源不能相互通信,除非有允许它们这样做的规则。为了避免混淆,您可能需要考虑为lambda函数创建一个安全组,并向实例SG添加一条规则,允许在api端口上从lambda SG进行通信。我已为特定IP地址(我的家和我的公司)打开了端口80。对于在同一个安全组中相互通信的实例,需要有一个规则允许这种交通。我已经用解释它的文档链接更新了答案。我试图编辑其他评论,但我花了很长时间-所以这将是一个自我参考规则。安全组就像应用于每个实例的端口规则模板;它们不是一个容器,里面的交通可以自由流动。