Node.js 在AWS Lambda中运行elasticdump(节点可执行文件)
我希望在AWS Lambda函数中运行Node.js 在AWS Lambda中运行elasticdump(节点可执行文件),node.js,bash,aws-lambda,Node.js,Bash,Aws Lambda,我希望在AWS Lambda函数中运行elasticdump命令。此软件包通过NPM安装,然后在CLI()上运行 我实现这一点的方法是在节点脚本中运行bash脚本。我将其安装到elasticdump的node\u modules文件夹中,然后以.zip格式上传到AWS Lambda 下面是调用bash脚本可执行文件的节点脚本本身: exports.handler = function (event, context, callback) { const execFile = requir
elasticdump
命令。此软件包通过NPM安装,然后在CLI()上运行
我实现这一点的方法是在节点脚本中运行bash脚本。我将其安装到elasticdump
的node\u modules
文件夹中,然后以.zip格式上传到AWS Lambda
下面是调用bash脚本可执行文件的节点脚本本身:
exports.handler = function (event, context, callback) {
const execFile = require('child_process').execFile;
execFile('./run-elasticdump.sh', (error, stdout, stderr) => {
if (error) {
callback(error);
}
callback(null, stdout);
});
}
bash脚本本身尝试运行elasticdump
命令,该命令同样位于node\u modules
文件夹中:
run-elasticdump.sh
elasticdump \
--input=http://es.com:9200/template-filter \
--output=templates.json \
--type=template
以下是文件夹结构:
run-elasticdump
- node_modules
-- elasticdump
-- ...
- package.json
- index.js
- run-elasticdump.sh
运行lambda时,我收到以下错误:
"elasticdump: command not found",
"",
" at ChildProcess.exithandler (child_process.js:308:12)",
" at ChildProcess.emit (events.js:315:20)",
" at maybeClose (internal/child_process.js:1048:16)",
" at Socket.<anonymous> (internal/child_process.js:439:11)",
" at Socket.emit (events.js:315:20)",
" at Pipe.<anonymous> (net.js:673:12)"
]
“elasticdump:未找到命令”,
"",
“在ChildProcess.exithandler(child_process.js:308:12)”中,
“在ChildProcess.emit(events.js:315:20)”中,
“在maybeClose(内部/子进程js:1048:16)”,
“at Socket.(internal/child_process.js:439:11)”,
“在Socket.emit(events.js:315:20)”中,
“在管道上。(net.js:673:12)”
]
我认为这是因为安装在node\u modules
文件夹中的elasticdump
包在bash运行时未被识别
有什么想法或建议可以解决这个问题吗