首页 > 解决方案 > 如何在 AWS lambda 上安装 fontconfig?

问题描述

这是如何在 AWS lambda 上安装 phantomjs?我已经想出了如何让 phantomjs 在 aws lambda 上运行,但是当我使用它生成 pdf(使用 html-pdf nodejs 库)时,内容缺少文本。如果我创建一个正在使用的 docker 容器FROM node:10.16.0-jessie,则 pdf 渲染得很好。如果我使用FROM amazonlinux:2.0.20190508(我认为类似于 AWS lambda 容器)创建 docker 容器,则我的 PDF 中缺少文本。

我已经amazonlinux:2.0.20190508通过运行解决了这个问题yum install fontconfig。但是,我不知道如何yum install fontconfig在真正的 lambda 中做相当于 a 的操作。如果您查看上面的链接,您会看到那里的答案试图提供该信息,但无论出于何种原因,它仍然无法正常工作。我相信原因是仍然缺少如何从amazonlinux:2.0.20190508容器中正确提取 fontconfig 安装的步骤。

总之,这是我的问题:在我运行之后yum install fontconfig,我amazonlinux:2.0.20190508如何从容器中提取它并打包它以便 AWS Lambda 可以使用它?

顺便说一句,我敢肯定还有其他答案似乎在回答这个问题,但是 AWS lambda 内置依赖项变化如此频繁,这些答案都不再有效。

标签: amazon-web-servicesdockeraws-lambdanode-html-pdf

解决方案


就我而言,我这样做了:

  1. 创建一个包含内容的 Docker 文件:
    FROM amazonlinux:2.0.20190508
    RUN yum -y install fontconfig freetype

并将其构建为example:latest

  1. 运行 docker 并挂载文件夹:
docker run -v D:\dockerFiles:/mnt --rm -it example:latest
  1. 通过路径在 docker 中找到库/lib64

libbz2.so.1 libexpat.so.1 libfontconfig.so.1 libfreetype.so.6 libpng15.so.15

  1. 将其复制到/mnt/lib. 取自libD:\dockerFiles压缩文件夹 lib。
  2. 创建 aws lambda 层并添加到 lambda。

推荐阅读