我正在使用带有node.js的aws-sdk,我无法与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({
host: 'localhost',
user: '',
password: '',
database: ''
});
var app = express();
// Load the SDK for JavaScript
var AWS = require('aws-sdk');
// Set the region
AWS.config.update({
region: 'us-east-1'
});
var AWS_ACCESS_KEY_ID = '';
var AWS_SECRET_ACCESS_KEY = '';
var params = {
DryRun: false
};
ec2 = new AWS.EC2({
apiVersion: '2016-11-15'
});
ec2.describeInstances(params, function(err, data) {
if (err) {
console.log("Error", err.stack);
} else {
console.log("Success", JSON.stringify(data));
res.send({
message: data
});
}
});
app.listen(443);
console.log("The node server is running at port 443");

有没有办法解决这个问题?我是第一次使用aws-sdk。提前谢谢。
答案 0 :(得分:1)
var AWS_ACCESS_KEY_ID = ''; var AWS_SECRET_ACCESS_KEY = ''; var params = { DryRun: false }; ec2 = new AWS.EC2({ accessKeyId: AWS_ACCESS_KEY_ID, secretAccessKey: AWS_SECRET_ACCESS_KEY, apiVersion: '2016-11-15' });
答案 1 :(得分:0)
凭据似乎是这里的问题。请仔细检查您提供的用于连接EC2的凭据。最好的选择是生成一个新的key_id和secret_access_key并使用它。 我个人建议下载凭证文件并将其传递给您的代码,而不是将key_id和secret_access_key放在这里。
答案 2 :(得分:0)
您的计算机或Node.js是否连接到互联网?你控制了这个。 首先打开cmd一个使用ping,如果ping返回包正常。控制node.js的互联网。对于控制使用请求模块。使用此代码:
const requi=require('requestify');
requi.get("https://google.com")
.then(function(data){
console.log(data);
})
.catch(function (err) {
console.log(err);
});
答案 3 :(得分:0)
确保您正确执行此操作的最简单方法是遵循AWS SDK For NodeJs中所述的建议凭据管理。
npm install aws-sdk
在Mac / Linux上的〜/ .aws / credentials 或Windows上的 C:\ Users \ USERNAME.aws \ credentials 中创建凭证文件
[default]
aws_access_key_id = your_access_key
aws_secret_access_key = your_secret_key
然后让AWS对象为您管理凭据:
var AWS = require('aws-sdk');
看起来你几乎就在那里;而不是将密钥存储在代码中,将它们存储在上面指定的credentials
文件中,然后重试。