aws ec2 getaddrinfo ENOTFOUND 错误代码

aws ec2 getaddrinfo ENOTFOUND error code

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

所以我知道我需要 AWS.metadataService 但我不知道如何使用它。我找到了this documentation (metaDataService) an 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 }

有什么办法可以解决这个问题吗?或者至少是什么导致了这个错误。

希望对您有所帮助。

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);
});

正如错误消息相当清楚地告诉您的那样,您以某种方式最终将 169.254.169.254http 作为主机名,将 169.254.169.254http:80 作为主机。为了完整说明这一点,您可能希望主机为 169.254.169.254。您需要弄清楚为什么您的请求会像这样被搞砸,并更正代码或您的配置文件,以便发送您想要发送的内容。

ENOTFOUNDgetaddrinfo 的回应仅仅意味着你想获得不存在或未知的地址。这通常意味着您有错别字,或者您用于配置服务的信息已过时或不正常(例如,当您在公司防火墙之外时试图访问私人公司服务器)。