使用无服务器框架在 Python AWS Lambda 函数上安装 Latex

Ale*_*lex 6 python amazon-web-services docker aws-lambda serverless-framework

我有一个应该创建 PDF 报告的 Python Lambda 函数。我尝试添加一个自定义 Dockerfile 以在 Lambda 上安装 Latex 类似于https://github.com/samoconnor/lambdalatex 1

但该功能无法找到已安装的 Latex 文件。(Dockerfile末尾复制的文件template.tex就在那里)

我的 serverless.yaml:

plugins:
    - serverless-python-requirements

custom:
    pythonRequirements:
   dockerizePip: non-linux
   dockerFile: Dockerfile
Run Code Online (Sandbox Code Playgroud)

Dockerfile:

FROM lambci/lambda:build-python3.6
# The TeXLive installer needs md5 and wget.
RUN yum -y install perl-Digest-MD5 && \
    yum -y install wget \
    yum -y install latexmk

RUN mkdir /var/src
WORKDIR /var/src

# Download TeXLive installer.
ADD http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz /var/src/
#COPY install-tl-unx.tar.gz /var/src/

# Minimal TeXLive configuration profile.
COPY texlive.profile /var/src/

# Intstall base TeXLive system.
RUN tar xf install*.tar.gz
RUN cd install-tl-* && \
    ./install-tl --profile ../texlive.profile

ENV PATH=/var/task/texlive/2017/bin/x86_64-linux/:$PATH

# Install extra packages.
RUN tlmgr install xcolor \
                  tcolorbox \
                  pgf \
                  environ \
                  trimspaces \
                  etoolbox \
                  booktabs \
                  lastpage \
                  pgfplots \
                  marginnote \
                  tabu \
                  varwidth \
                  makecell \
                  enumitem \
                  setspace \
                  xwatermark \
                  catoptions \
                  ltxkeys \
                  framed \
                  parskip \
                  endnotes \
                  footmisc \
                  zapfding \
                  symbol \
                  lm \
                  sectsty \
                  stringstrings \
                  koma-script \
                  multirow \
                  calculator \
                  adjustbox \
                  xkeyval \
                  collectbox \
                  siunitx \
                  l3kernel \
                  l3packages \
                  helvetic \
                  charter \
                  latexmk

# Install latexmk.
RUN tlmgr install latexmk

# Remove LuaTeX.
RUN tlmgr remove --force luatex

# Remove large unneeded files.
RUN rm -rf /var/task/texlive/2017/tlpkg/texlive.tlpdb* \
           /var/task/texlive/2017/texmf-dist/source/latex/koma-script/doc \
           /var/task/texlive/2017/texmf-dist/doc 

RUN mkdir -p /var/task/texlive/2017/tlpkg/TeXLive/Digest/ && \
    mkdir -p /var/task/texlive/2017/tlpkg/TeXLive/auto/Digest/MD5/ && \
    cp /usr/lib64/perl5/vendor_perl/Digest/MD5.pm \
       /var/task/texlive/2017/tlpkg/TeXLive/Digest/ && \
    cp /usr/lib64/perl5/vendor_perl/auto/Digest/MD5/MD5.so \
       /var/task/texlive/2017/tlpkg/TeXLive/auto/Digest/MD5

FROM lambci/lambda:build-python3.6

WORKDIR /var/task

ENV PATH=/var/task/texlive/2017/bin/x86_64-linux/:$PATH
ENV PERL5LIB=/var/task/texlive/2017/tlpkg/TeXLive/

COPY template.tex /var/task/
Run Code Online (Sandbox Code Playgroud)

requirements.txt 中的 Python 需求运行良好。

以下是 Docker 部分的部署输出:

无服务器:从 Dockerfile 构建自定义 docker 镜像……无服务器:Docker 镜像:sls-py-reqs-custom

你知道我做错了什么吗?