aws ec2 getaddrinfo ENOTFOUND错误代码

时间:2016-05-23 07:49:24

标签: node.js amazon-web-services amazon-s3 amazon-ec2 error-code

我的目标是在我的脚本启动时获取instanceId。 (因为我想将我的网络服务器作为后端与aws elb连接。这甚至可以在我对id进行硬编码时起作用)所以现在我尝试编写一个函数,它给了我id。

所以我所知道的是我需要AWS.metadataService,但我不知道如何使用它。我发现this documentation(metaDataService)为command-line tool。我想我需要像这样结合它:

var meta  = new AWS.MetadataService();

meta.request("http://169.254.169.254/latest/meta-data/", function(err, data){
    if(err){
        console.log(err);
    }
    console.log(data);
});

但它产生了这个错误:

{ [Error: getaddrinfo ENOTFOUND 169.254.169.254http 169.254.169.254http:80]
  code: 'ENOTFOUND',
  errno: 'ENOTFOUND',
  syscall: 'getaddrinfo',
  hostname: '169.254.169.254http',
  host: '169.254.169.254http',
  port: 80 }

有什么想法可以解决这个问题吗?或至少导致此错误的原因。

2 个答案:

答案 0 :(得分:4)

希望它有所帮助。

var meta  = new AWS.MetadataService({
   host: '169.254.169.254'
});

meta.request('/latest/meta-data/', function(err, data){
   if(err){
      console.log(err);
   }
   console.log(data);
});

答案 1 :(得分:0)

错误消息清楚地告诉您,您最终以某种方式传入169.254.169.254http作为主机名,并以169.254.169.254http:80作为主机。只是为了完全说明这一点,您可能希望主机为169.254.169.254。您需要弄清楚为什么这样使请求陷入僵局,并更正代码或配置文件,以便发送要发送的内容。

响应ENOTFOUND

getaddrinfo仅仅意味着您想要获取不存在或未知的内容的地址。通常,这意味着您输入错误,或者用于配置服务的信息已过时或以其他方式无法使用(例如,当您位于公司防火墙之外时,试图访问私有公司服务器)。