Я пытаюсь ввести 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;
};