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