Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法使用AWS sdk连接到AWS EC2_Javascript_Node.js_Amazon Ec2_Aws Sdk - Fatal编程技术网

Javascript 无法使用AWS sdk连接到AWS EC2

Javascript 无法使用AWS sdk连接到AWS EC2,javascript,node.js,amazon-ec2,aws-sdk,Javascript,Node.js,Amazon Ec2,Aws Sdk,我将aws sdk与node.js一起使用,无法建立到aws ec2的连接以使用sdk获取实例详细信息 这就是错误: Error Error: connect ENETUNREACH at Object.exports._errnoException (util.js:1020:11) at exports._exceptionWithHostPort (util.js:1043:20) at TCPConnectWrap.afterConnect [as oncomplete] (net.j

我将aws sdk与node.js一起使用,无法建立到aws ec2的连接以使用sdk获取实例详细信息

这就是错误:

Error Error: connect ENETUNREACH 
at Object.exports._errnoException (util.js:1020:11)
at exports._exceptionWithHostPort (util.js:1043:20)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1086:14)
这是我写的一段代码: 为了安全起见,我已经取下了访问密钥

var express=require(“express”);
var mysql=require('mysql');
var connection=mysql.createConnection({
主机:“localhost”,
用户:“”,
密码:“”,
数据库:“”
});
var-app=express();
//加载JavaScript的SDK
var AWS=要求('AWS-sdk');
//设置区域
AWS.config.update({
地区:'us-east-1'
});
var AWS\u ACCESS\u KEY\u ID='';
var AWS_SECRET_ACCESS_KEY='';
变量参数={
DryRun:错误
};
ec2=新AWS.ec2({
apiVersion:'2016-11-15'
});
ec2.描述说明(参数、函数(错误、数据){
如果(错误){
log(“错误”,err.stack);
}否则{
log(“Success”,JSON.stringify(data));
res.send({
信息:数据
});
}
});
app.listen(443);

log(“节点服务器正在端口443上运行”)这里的问题似乎是凭证。请仔细检查您提供的连接到EC2的凭据。最好的选择是生成一个新的密钥id和secret\u access\u密钥并使用它。 我个人建议下载凭证文件并将其传递到您的代码中,而不是将密钥_id和密码_access _key放在这里。

  • 可能您没有传递API键
var AWS\u ACCESS\u KEY\u ID=''; var AWS_SECRET_ACCESS_KEY=''; 变量参数={ DryRun:错误 }; ec2=新AWS.ec2({ accessKeyId:AWS\u ACCESS\u KEY\u ID, secretAccessKey:AWS\u SECRET\u ACCESS\u KEY, apiVersion:'2016-11-15' }); 建议:
  • 将API密钥放在不同的位置
  • 如果此代码将托管在EC2中,请使用EC2的服务角色权限
  • 使用配置文件

您的计算机或Node.js是否连接到internet?你控制这个。 如果ping返回包正确,首先打开cmd并使用ping。控制node.js的internet。对于控制,请为此使用requestify模块。使用此代码:

const requi=require('requestify');
requi.get("https://google.com")
    .then(function(data){
        console.log(data);
    })
    .catch(function (err) {
       console.log(err);
    });

确保正确执行此操作的最简单方法是遵循中所述的建议凭据管理

npm安装aws sdk

在Mac/Linux上的~/.aws/credentials或Windows上的C:\Users\USERNAME.aws\credentials上创建凭据文件

然后让AWS对象为您管理凭据:

var AWS=require('AWS-sdk')


看起来你可能就快到了;不要将密钥存储在代码中,而是将它们存储在上面指定的
凭证
文件中,然后重试。

您将API密钥传递到哪里?我做了这些更改。但是,没有运气。我得到了一个不同的错误<代码>错误MultipleValidationErrors:有2个验证错误:**UnexpectedParameter:在params中找到意外的密钥“AWS\u ACCESS\u key\u ID”*UnexpectedParameter:在ParamValidator的params中找到意外的密钥“AWS\u SECRET\u ACCESS\u key”。validate
@abhishekbv我认为您没有声明这些变量。此外,您可以测试删除MySQL连接吗?我现在可以建立连接了。非常感谢你。如果我遇到任何其他问题,我会给你发一封电子邮件。我使用的是有效的凭证。此外,还要交叉验证您的建议。我生成了新的密钥。即使这样,我也会遇到同样的错误。我将按照您的建议实施。这使代码更具可读性。这是Windows位置的输入错误吗?USERNAME.aws?用户名\.aws有意义。我想这是可以测试的。我认为这是一个打字错误肯定还没有起作用;但在C:\Users下创建一个与Windows登录没有直接关系的文件夹似乎很奇怪(也很讨厌)。我忘了这个页面以我期望的方式给出了目录:我可以使用Node.js服务器与外部世界进行交互。这是AWS密钥的问题。
const requi=require('requestify');
requi.get("https://google.com")
    .then(function(data){
        console.log(data);
    })
    .catch(function (err) {
       console.log(err);
    });
[default] 
aws_access_key_id = your_access_key   
aws_secret_access_key = your_secret_key