我的目标是在我的脚本启动时获取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 }
有什么想法可以解决这个问题吗?或至少导致此错误的原因。
答案 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
仅仅意味着您想要获取不存在或未知的内容的地址。通常,这意味着您输入错误,或者用于配置服务的信息已过时或以其他方式无法使用(例如,当您位于公司防火墙之外时,试图访问私有公司服务器)。