Как я могу подключиться к своему инстансу EC2 через S SH с функцией AWS Lambda? - PullRequest
0 голосов
/ 20 февраля 2020

Я пытаюсь ввести sh в экземпляр ec2 с помощью лямбда-функции. Я продолжаю получать нулевое значение для моего ответа каждый раз, когда пытаюсь запустить свою функцию, когда в моих журналах отображается следующая ошибка:

START RequestId: xxxx-xxxx-xxxx-xxxx-xxxx Version: $LATEST
2020-02-19T22:56:16.574Z    xxxx-xxxx-xxxx-xxxx-xxxx    INFO    failed connection, boo
2020-02-19T22:56:16.576Z    xxxx-xxxx-xxxx-xxxx-xxxx    INFO    Error: Timed out while waiting for handshake
    at Timeout._onTimeout (/var/task/node_modules/ssh2/lib/client.js:687:19)
    at listOnTimeout (internal/timers.js:531:17)
    at processTimers (internal/timers.js:475:7) {
  level: 'client-timeout'
}

Поскольку это ошибка тайм-аута, я решил, что это проблема с подключением к экземпляр, а не мой код, но лямбда - это тот же VP C, к которому относится EC2, а также группа безопасности, позволяющая s sh соединения. Я также могу подключиться к s sh в экземпляр вручную.

exports.handler = async (event) => {

  const fs = require('fs')
  const SSH = require('simple-ssh');
  const pemfile = 'xxx.pem';
  const user = 'ec2-user';
  const host = 'xx.xx.xx.xx';


  // all this config could be passed in via the event
  const ssh = new SSH({
    host: host,
    user: user,
    key: fs.readFileSync(pemfile)
  });

  let cmd = "ls";
  if (event.cmd == "long") {
    cmd += " -l";
  }

  let prom = new Promise(function(resolve, reject) {

    let ourout = "";

    ssh.exec('mkdir /home/ec2-user/ssh_success', {
      exit: function() {
        ourout += "\nsuccessfully exited!";
        resolve(ourout);
      },
      out: function(stdout) {
        ourout += stdout;
      }
    }).start({
      success: function() {
        console.log("successful connection!");
      },
      fail: function(e) {
        console.log("failed connection, boo");
        console.log(e);
      }
    });

  });

  const res = await prom;

  const response = {
    statusCode: 200,
    body: res,
  };
  return response;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...