以下是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.comhttps://bittrex.com:443 at errnoException(dns.js:28:10)at GetAddrInfoReqWrap.onlookup [as oncomplete](dns.js:76:26)
其他解决方案不起作用。
5条答案
按热度按时间8i9zcol21#
从主机中删除
https://
。require已经表明您正在使用https/SSL。jljoyd4f2#
我修改了您的代码,以便在AWS Lambda Node.js 6.10中正常工作。我将Lambda超时设置为60秒以进行测试。
最大的变化是添加了“res.on('data',function(chunk){}:“和“res.on('end',function(){}"。
avkwfej43#
问题出在你的安全组。看起来你的lambda没有解析DNS的权限。检查你的lambda sec组是否启用了端口53 UDP和TCP。
gblwokeq4#
还要确保lambda尝试到达可到达的主机。换句话说,确保主机不驻留在专用网络,VPN或不可到达的网络(无法从外部到达)
(简单但值得一提)
fhg3lkii5#
您的lambda和主机必须位于同一个VPC上,还可以尝试为lambda添加与主机相同的安全组