aws ec2 getaddrinfo ENOTFOUND код ошибки

Моя цель - получить instanceId при запуске моего скрипта. (Потому что я хочу подключить свой веб-сервер как сервер к aws elb. Это даже работает, когда я жестко кодирую идентификатор). Итак, теперь я пытаюсь кодировать функцию, которая дает мне идентификатор.

Так что я знаю, что мне нужен сервис AWS.metadataService, но я не знаю, как его использовать. Я нашел эту документацию (metaDataService) инструментом командной строки. Я думаю, мне нужно объединить это так:

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 }

Есть идеи, что может это исправить? Или, по крайней мере, что вызывает эту ошибку.

1 ответ

Решение

Надеюсь, поможет.

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, Вам необходимо выяснить, почему ваш запрос был выполнен таким образом, и исправить код или файлы конфигурации, чтобы вы отправили то, что хотели отправить.

ENOTFOUND в ответ на getaddrinfo просто означает, что вы хотели получить адрес чего-то, что не существует или неизвестно. Очень часто это означает, что у вас есть опечатка или что информация, которую вы использовали для настройки вашей службы, устарела или иным образом вышла из строя (например, попытка получить доступ к частному корпоративному серверу, когда вы находитесь за пределами корпоративного брандмауэра).

Другие вопросы по тегам