AWS Lambda:错误:getaddrinfo ENOTFOUND

Ama*_*day 7 javascript https aws-lambda

这是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();
};
Run Code Online (Sandbox Code Playgroud)

错误:getaddrinfo ENOTFOUND https://bittrex.com https://bittrex.com:443 在errnoException(dns.js:28:10)在GetAddrInfoReqWrap.onlookup [作为未完成](dns.js:76:26)

我无法确定,请帮忙。其他解决方案无效。

std*_*bar 17

https://从主机中删除。要求已经说明您正在使用 https/SSL。


Joh*_*ley 10

我修改了您的代码以在 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();
};
Run Code Online (Sandbox Code Playgroud)


Suk*_*hah 5

问题出在您的安全组上。看起来您的 lambda 没有\xe2\x80\x99t 有权解析 DNS。检查 lambda sec 组是否启用了端口 53 UDP 和 TCP。

\n

  • Lambda 默认没有安全组。如果您将其网络配置更改为在 VPC 内运行,则它只有一个 (2认同)
  • 是的,默认情况下它没有分配安全组,但可以通过分配安全组轻松将其配置为在您的 VPC 和子网中运行。 (2认同)