AWS Lambda はバイナリの実行をサポートしているため、AWS Lambda で実行したかったpdflatex
のですが、いくつか問題が発生しました。私は他のバイナリを正常に実行しましたpdflatex
が、多くの共有 OS ライブラリの依存関係があり、それを機能させる方法がわかりませんでした。
サンプル コードは次のようになります。
'use strict';
let exec = require('child_process').exec;
exports.handler = (event, context, callback) => {
const child = exec('LD_LIBRARY_PATH=bin/ ./pdflatex my-file.tex', (error) => {
callback(error, 'Process complete!');
});
child.stdout.on('data', console.log);
child.stderr.on('data', console.error);
};
ZIP ファイルは次のようになります。
index.js -------------- where the above code is
pdflatex -------------- binary from my OS
my-file.tex ----------- a sample LaTeX document
bin/ ------------------ folder with shared OS libraries
アップロードされた ZIP ファイルには、上記のすべてが含まれています。
で生成しpdflatex
ましたcp $(which pdflatex) pdflatex
。
- これはそれをアップロードする正しい方法
pdflatex
ですか?この方法に問題はありますか?より良い方法はありますか?
初めて実行しようとした後、AWS Lambda は多くlib_____.so
が不足していると訴えたので、それらを自分のマシンからbin/
ZIP 内のフォルダーにコピーしました。以前はの依存関係ldd $(which pdflatex)
を探していました。pdflatex
しかし、さすがにAWS Lambdaが動くLinux版には対応していなかったので、CentOSを起動してlib______.so
ファイルをbin/
フォルダにコピーしたのですが、これもうまくいきませんでした。
pdflatex
必要なすべての依存関係を含み、共有 OS ライブラリを必要とせずに実行される自己完結型のバージョンを「ダンプ」する方法はありますか?pdflatex
Amazon Linux インスタンス内でコンパイルする必要がありますか? これを 64 ビット アーキテクチャでコンパイルし、コードを 32 ビット アーキテクチャで実行した場合、失敗しませんか?