发出 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 错误

发出获取请求时出现多个问号

发出 Ajax POST 请求时出现“parseerror”

发出 HTTP 请求时出现跨域错误

使用 axios 发出请求时出现 MethodNotAllowedHttpException(流明)