AWS Lambda: Error: getaddrinfo ENOTFOUND

2020-07-04 06:43发布

here's the code in AWS Lambda 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) {
        var test = res.toString();
        console.log(JSON.parse(test));
        //console.log(JSON.parse(res.toString()));
    });
    req.end();
};

Error: getaddrinfo ENOTFOUND https://bittrex.com https://bittrex.com:443 at errnoException (dns.js:28:10) at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:76:26)

I am not able to figure, please help. Other solutions did not work.

3条回答
家丑人穷心不美
2楼-- · 2020-07-04 06:46

Remove the https:// from the host. The require already says you're using https/SSL.

查看更多
ゆ 、 Hurt°
3楼-- · 2020-07-04 07:07

The issue is with your security groups. Looks like your lambda doesn’t have access to resolve DNS. Check if you lambda sec groups have port 53 UDP and TCP enabled.

查看更多
Explosion°爆炸
4楼-- · 2020-07-04 07:08

I modified your code to work correctly in AWS Lambda Node.js 6.10. I set the Lambda timeout to be 60 seconds for testing.

The big change is adding "res.on('data', function(chunk) {}:" and "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();
};
查看更多
登录 后发表回答