发出 HTTPS 请求时出现“错误:getaddrinfo ENOTFOUND”错误
Posted
技术标签:
【中文标题】发出 HTTPS 请求时出现“错误:getaddrinfo ENOTFOUND”错误【英文标题】:"Error: getaddrinfo ENOTFOUND" error when making an HTTPs request 【发布时间】:2018-04-02 17:45:47 【问题描述】:这是 AWS Lambda 函数中的代码:
var https = require('https');
exports.handler = (event, context, callback) =>
var params =
host: "bittrex.com",
path: "/api/v1.1/public/getmarketsummaries"
;
var req = https.request(params, function(res)
var test = res.toString();
console.log(JSON.parse(test));
//console.log(JSON.parse(res.toString()));
);
req.end();
;
错误:getaddrinfo ENOTFOUND https://bittrex.com https://bittrex.com:443 在 errnoException (dns.js:28:10) 在 GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:76:26)
其他解决方案无效。
【问题讨论】:
@MarkB,什么是 VPC? 【参考方案1】:从主机中删除https://
。要求已经表明您正在使用 https/SSL。
【讨论】:
【参考方案2】:我修改了您的代码以在 AWS Lambda Node.js 6.10 中正常工作。我将 Lambda 超时设置为 60 秒以进行测试。
最大的变化是添加了“res.on('data', function(chunk) :”和“res.on('end', function() ”。
var https = require('https');
exports.handler = (event, context, callback) =>
var params =
host: "bittrex.com",
path: "/api/v1.1/public/getmarketsummaries"
;
var req = https.request(params, function(res)
let data = '';
console.log('STATUS: ' + res.statusCode);
res.setEncoding('utf8');
res.on('data', function(chunk)
data += chunk;
);
res.on('end', function()
console.log("DONE");
console.log(JSON.parse(data));
);
);
req.end();
;
【讨论】:
【参考方案3】:问题在于您的安全组。看起来您的 lambda 无权解析 DNS。检查您的 lambda sec 组是否启用了端口 53 UDP 和 TCP。
【讨论】:
Lambda 默认没有安全组。如果您将其网络配置更改为在您的 VPC 中运行,它只有一个 是的,默认情况下它没有分配安全组,但可以轻松地将其配置为在您的 VPC 和分配安全组的子网中运行。以上是关于发出 HTTPS 请求时出现“错误:getaddrinfo ENOTFOUND”错误的主要内容,如果未能解决你的问题,请参考以下文章
在 Nest JS 中发出 http 请求时出现 httpService 未定义错误
发出 GET 请求时没有 CORS 错误,但发出 POST 请求时出现 CORS 错误