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