【问题标题】:Run bash script from node AWS Lambda function从节点 AWS Lambda 函数运行 bash 脚本
【发布时间】:2016-12-02 11:59:04
【问题描述】:

我有一个节点 lambda 函数,我正在从中运行一个 bash 脚本。

'use strict';

const exec = require('child_process').exec;

exports.handler = (event, context, callback) => {
    const message = event.message;
    const child = exec('./bs.sh ' + message, function(err, stdout, stderr) {
    console.log(stdout);
    console.log(stderr);
    });
};

当我运行它时,我得到 /bin/sh: ./bs.sh: Permission denied 。在压缩函数之前,我尝试使用chmod 777 bs.sh 更改权限,但这也不起作用。是 lambda 的限制还是我的方法有误?

【问题讨论】:

  • 顺便说一句:你应该检查错误并调用回调。函数(错误,标准输出,标准错误){如果(错误){回调(错误); } 其他 { console.log(stdout);控制台.log(stderr);打回来(); } });

标签: bash amazon-web-services aws-lambda


【解决方案1】:

你会想看看

https://aws.amazon.com/blogs/compute/running-executables-in-aws-lambda/

特别是这一点:

包含您自己的可执行文件很容易;只需将它们打包到您上传的 ZIP 文件中,然后在您从 Node.js 或您之前启动的其他进程中调用它们时引用它们(包括您创建的 ZIP 文件中的相对路径)。确保在函数代码的开头包含以下内容:

process.env['PATH'] = process.env['PATH'] + ':' + process.env['LAMBDA_TASK_ROOT']

【讨论】:

  • 我试过这个可执行二进制文件,但我得到了 Permission denied
猜你喜欢
  • 2013-05-06
  • 2021-12-03
  • 2019-06-11
  • 1970-01-01
  • 2020-08-05
  • 2014-06-07
  • 1970-01-01
  • 2016-04-10
  • 2013-05-11
相关资源
最近更新 更多