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

时间:2018-02-12 19:06:12

标签: javascript node.js amazon-ec2 aws-sdk

我正在使用带有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。提前谢谢。

4 个答案:

答案 0 :(得分:1)

  • 可能您没有传递API密钥。
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'
});

建议:

  • 将您的API密钥放在不同的位置。
  • 如果此代码将托管在EC2中,请使用EC2的服务角色权限。
  • 使用个人资料。

答案 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文件中,然后重试。