中国服务器网

服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器

Learn more

如何将支持MP3的SoX二进制文件与AWS的Linux AMI的局限性一起打包到NodeJS AWS Lambda函数中?

我在过去3个月里一直在处理这个问题,而且完全陷入困境。 我正在尝试打包使用SoX的NodeJS AWS Lambda函数,并将其依赖项转换为MP3文件。 我可以通过按照这里引用的指令来获取我的代码来识别SoX二进制文件的自定义位置。 我最终将此代码添加到我的Lambda函数调用的开始,以更新process.env PATHvariables以包括自定义二进制文件的path。 process.env['PATH'] = process.env['PATH'] + ':' + path.join(process.env['LAMBDA_TASK_ROOT'], 'binaries'); 这导致我的process.env PATH更新如下所示: /usr/local/lib64/node-v4.3.x/bin:/usr/local/bin:/usr/bin/:/bin:/var/task/binaries 这看起来是正确的, binaries是包含我编译的sox二进制binaries的目录。 由于我使用的是NodeJS,因此我必须修改sox-audio NPM模块,以便使用更新后的process.envvariables来执行child_process exec和spawn调用。 这允许代码find二进制文件,但在执行过程中仍然出现错误。 Sox process exited with code 127 and signal null 我明白,虽然它可以find我包含的SoX二进制文件,但它不能find一个与SoX一起使用的命令,但没有更多的信息,我不知道它是什么。 我想这是因为我不确定是否有包含二进制文件的所有文件。 为了在支持MP3的情况下编写一个完整的SoX编译版本,我创build了一个新的EC2 linux实例,然后按照这里提供的说明进行操作。 我一行一行地确保我可以得到它的工作,并安装了一些依赖项以启用编译(如开发人员工具 ),并通过导出export PATH=$PATH:/usr/local/bin导出构buildPATH能够得到与MP3支持安装的完整版本。 我testing了它,它的工作方式就像我需要它。 由于AWS Lambda函数与AWS EC2实例在Linux(Amazon Linux AMI)的相同精简版上运行,理论上,如果我可以导出SoX构build并将其包含在我的Lambda包中,那么我应该能够使其工作。 那是我遇到麻烦的地方。 什么构成了自己? /usr/local/bin有一个SoX linux可执行文件,它是一个单独的文件,但是其中还有许多文件,这些文件似乎都与使SoX及其依赖项相关。 这里是我正在构build的/usr/local/bin中的文件列表。 我尝试通过FTP导出所有这些文件,然后将它们导入到另一个干净的EC2实例中,但即使在运行export PATH=$PATH:/usr/local/bin由于依赖性问题,SoX将无法运行。 很明显,仅仅导出这些文件是不够的。 我如何导出以及导出哪些内容,从而将我的SoX构build与支持MP3的EC2实例关联起来,并将其包含在我的AWS […]