【问题标题】:Running .bat file from EC2 using AWS lambda [closed]使用 AWS lambda 从 EC2 运行 .bat 文件 [关闭]
【发布时间】:2016-08-29 21:01:50
【问题描述】:

我目前正在处理项目,我在 EC2 中有一个 bat 文件,我想通过 AWS-lambda 运行该文件,以便该文件可以传输 S3 数据文件。 请帮帮我。
我正在使用 python 语言。

【问题讨论】:

  • 什么是“bat 文件”?您是在谈论 Windows .bat(批处理)文件吗?
  • 是的,我说的是那个。对不起,我是新来的这个不完整的问题
  • 好吧,.bat 文件在 Windows 中运行,但 Lambda 不在 Windows 下运行,因此您需要编写一个脚本来完成与 .bat 文件相同的目的,但在Lambda下支持的一种语言,比如你提到的Python。希望你已经超越了这一点,但不清楚你在问什么。 “请帮助我”不是一个足够具体的问题,我们可以在这里回答。考虑针对您遇到的特定编程相关问题编辑您的问题。
  • 请确认。我了解到您在EC2 上有一些文件需要上传到S3,为此您拥有.bat 文件。如果是这种情况,我希望您添加更多关于您的系统功能的详细信息,您需要如何以及多久将文件从EC2 上传到S3。这里有些东西看起来很糟糕,我可能会建议你用不同的方法来解决你的问题。
  • @johni,你就在你的位置。但我正在尝试使用 lambda 函数运行位于 EC2 的批处理文件。这就是我关心的问题,如果你能帮我解决这个问题.....

标签: python amazon-web-services amazon-s3 amazon-ec2 aws-lambda


【解决方案1】:

您可以通过AWS SSM service 完成此操作,它允许您在 EC2 实例上远程运行命令。

【讨论】:

    【解决方案2】:

    您必须在EC2 上运行一个服务器,该服务器侦听例如http 调用并为每个请求运行.bat 文件。

    nodejs 中执行此操作的最简单脚本如下所示:

    const PORT = process.env.PORT || 3000;
    const BAT_PATH = 'c:\\path\\to\\file.bat';
    
    let express = require('express');
    let exec = require('child_process').exec;
    let app = express();
    
    app.get('/exec', (req, res) => {
        exec(BAT_PATH, (err, stdout, stderr) => {
            if (err) {
                console.error(err);
            }
    
            // print stdout of executing process
            console.log(stdout);
    
            // print stderr of executing process
            console.log(stderr);
        });
    });
    
    app.listen(PORT, () => {
        console.log(`Server listening on *:${PORT}`);
    });
    

    如果你是python 的人,我相信你会知道如何翻译这段代码。

    至于你的lambda,唯一的补充就是向ec2-ip:3000/exec发送http GET请求。

    不要忘记在您的EC2 绑定的安全组中打开相关端口。

    希望能回答你的问题。

    【讨论】:

    • 感谢您的回复将继续...
    • 如果它解决了您的问题,请不要忘记接受这个答案。
    猜你喜欢
    • 1970-01-01
    • 2018-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多