【问题标题】:aws ec2 getaddrinfo ENOTFOUND error codeaws ec2 getaddrinfo ENOTFOUND 错误代码
【发布时间】:2016-09-20 00:06:44
【问题描述】:

我的目标是在我的脚本启动时获取 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 }

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

【问题讨论】:

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


    【解决方案1】:

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

    ENOTFOUNDgetaddrinfo 的响应只是表示您想要获取不存在或未知的东西的地址。这通常意味着您有错字,或者您用于配置服务的信息已过时或不正常(例如,当您在公司防火墙之外时尝试访问私人公司服务器)。

    【讨论】:

      【解决方案2】:

      希望对你有帮助。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-10-16
        • 2022-11-10
        • 1970-01-01
        • 2018-07-25
        • 2018-03-03
        • 2014-10-20
        • 1970-01-01
        • 2021-08-10
        相关资源
        最近更新 更多