Amazon web services 如何在AWS Lambda上运行类似'pdflatex'的二进制文件?

Amazon web services 如何在AWS Lambda上运行类似'pdflatex'的二进制文件?,amazon-web-services,latex,aws-lambda,pdflatex,latex-environment,Amazon Web Services,Latex,Aws Lambda,Pdflatex,Latex Environment,由于AWS Lambda支持,我想在AWS Lambda中运行pdflatex,但我遇到了一些问题。我已经成功运行了其他二进制文件,但是pdflatex有许多共享操作系统库依赖项,我不知道如何使它工作 示例代码如下所示: 'use strict'; let exec = require('child_process').exec; exports.handler = (event, context, callback) => { const child = exec('LD_LIBR

由于AWS Lambda支持,我想在AWS Lambda中运行
pdflatex
,但我遇到了一些问题。我已经成功运行了其他二进制文件,但是
pdflatex
有许多共享操作系统库依赖项,我不知道如何使它工作

示例代码如下所示:

'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);
};
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文件如下所示:

'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);
};
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文件包含上述所有内容

我用
cp$(哪个pdflatex)pdflatex生成了
pdflatex

  • 这是上传
    pdflatex
    it的正确方法吗?这种方法有什么问题吗?有更好的办法吗
  • 在第一次尝试运行之后,AWS Lambda抱怨说许多
    lib\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。我使用
    ldd$(哪个pdflatex)
    查找
    pdflatex
    的依赖项

    然而,正如我所想象的,它们与运行AWS Lambda的Linux版本不兼容,因此我启动了CentOS并将
    lib\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

  • 有没有一种方法可以“转储”包含所有必需依赖项且运行时不需要共享操作系统库的自包含版本的
    pdflatex

  • 我是否需要在Amazon Linux实例中编译
    pdflatex
    ?如果我在64位体系结构中编译它,代码在32位体系结构中运行,它不会失败吗


  • 生成用于Lambda的二进制文件的最佳方法是在Lambda使用的相同版本的Linux上复制或编译它们。Amazon在此处有一个AMI图像列表:。从其中一个创建一个EC2实例,安装软件包,并将文件复制到zip中


    对于#2,您可以通过执行静态编译来简化依赖关系,但除非您熟悉从源代码构建包,否则我不会尝试这样做。您需要在链接阶段使用
    -static
    进行编译。

    感谢您提供有关AMI的提示。您能告诉我如何使用
    -static
    标志编译LeTeX吗?