从 AWS Lambda (NodeJS) 发送 SSH 命令

Send SSH commands from AWS Lambda (NodeJS)

我想在 AWS Lambda Nodejs 中创建一个函数,它可以将一些 SSH 命令发送到 linux 机器。可能吗?

我知道有一些 nodejs 模块可以执行此操作,但 AWS Lambda Nodejs 没有它们,我不想让任何 EC2 参与到此 Lambda 中。

我只想知道如何从 AWS Lambda 函数在 linux 机器上执行一些命令,通过 SSH 或其他一些我想不到的方法。

选项数量:您可以从 Python 中打开 ssh,使用来自 nodejs 的 https://www.npmjs.com/package/simple-ssh 等包,等等

可以确认这在 lambda 上与 Alexa 和 simple-ssh 一起工作。需要注意的几件事:ssh.on(需要 "close",否则 lambda 函数将在 SSH 命令完成工作之前关闭。(Lambda 在 alexa.execute 调用时关闭。)

这是 "ssh lambda aws" 的前 Google 个结果之一,所以我将其张贴在这里,希望能为需要这样做的其他人节省一些时间。

工作示例:https://github.com/PockyBum522/alexa_nodejs_send_ssh_commands_lambda

var SSH = require('simple-ssh');
var Alexa = require("alexa-sdk");

var ssh = new SSH({
    host: 'yourserver.com',
    user: 'username',
    key: `-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEApQtRxugrDMU8YNBy2j2Lyk6yAxMSKaiusrNUamXKLxFvdlZ1
6HCN+jjaE7q8OYFEmq9l2B5U8GCYMFldXWBxIv7fvRWyi1ZTw3olaZ8DmGYwPKLM
TOQ3MOm/zcJZbiTY1/cx2CW6NupPX78O42hLKM2iJwp6epgxC5t2Vw==
-----END RSA PRIVATE KEY-----`
});

exports.handler = function(event, context, callback) {
    var alexa = Alexa.handler(event, context);
    alexa.registerHandlers(handlers);

    ssh.on("close", function () {alexa.execute()});
    ssh
        .exec('nohup /home/username/script.sh > /dev/null 2>&1 &', {  // Nohup runs script in BG, > /dev/null redirects output. & also runs in BG. Trying to keep things fast to make alexa response time good.
            out: console.log.bind(console)
        })
        .exec('exit', {                                               // Also for trying to keep things fast.
            out: console.log.bind(console)
        }).start(); 
};

var handlers = {
    'LaunchRequest': function(){
        this.emit(':tell', 'Now opening the garage door.'); 
    }
};

这个 post 现在相对较旧,但是对于找到它的人,AWS 制作了一个博客 post 主要描述了您要查找的内容:https://aws.amazon.com/fr/blogs/compute/scheduling-ssh-jobs-using-aws-lambda/

显然 AWS 博客 post 描述了如何将其用于 AWS 服务,但该示例仍然使用 python。