从节点AWS Lambda函数运行bash脚本

时间:2016-12-01 06:03:43

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

我有一个节点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的限制还是我的方法中的错误?

1 个答案:

答案 0 :(得分: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']