如何在基本 AWS Lambda Node.js Dockerfile 映像中安装依赖项

How to install dependencies in base AWS Lambda Node.js Dockerfile image

我正在使用通过容器映像部署的 Node.js 编写 AWS Lambda 函数。

我使用下面 link 中提供的 Lambda 基础 Node.js Dockerfile 映像来配置我的映像。这很好用。我的映像已部署,我的 Lambda 函数是 运行.

https://docs.aws.amazon.com/lambda/latest/dg/images-create.html#images-create-from-base

这是 Dockerfile:

FROM public.ecr.aws/lambda/nodejs:14

COPY index.js package.json cad/  ${LAMBDA_TASK_ROOT}

# Here I would like to install libgl1-mesa-dev, libx11-dev and libglu1-mesa-de

RUN npm install

CMD ["index.handler"]

但是,我现在需要在映像上安装额外的依赖项。具体来说,根据 PDFTron documentation here,我需要 OpenGL 使用 PDFTron 将 CAD 文件转换为 PDF。所以我需要 libgl1-mesa-devlibx11-devlibglu1-mesa-de.

上述 AWS 文档中的信息指出:

Install any dependencies under the ${LAMBDA_TASK_ROOT} directory alongside the function handler to ensure that the Lambda runtime can locate them when the function is invoked.

如果这是 ubuntu 或 alpine 图像,我可以使用 apt-getapk add 安装。但这两个基础 AWS Lambda 节点映像均不可用,因为这不是 ubuntu 或 alpine 映像。

所以我的问题是,如何在此图像上安装 libgl1-mesa-devlibx11-devlibglu1-mesa-de,以便 Lambda 运行时可以在调用函数时找到它们?

我认为 ubuntu 在 Amazon Linux 2(lambda 正在使用它)上的等价物是:

FROM public.ecr.aws/lambda/nodejs:14

COPY index.js package.json cad/  ${LAMBDA_TASK_ROOT}

RUN yum install -y libgl1-mesa-devel libx11-devel  mesa-libGL-devel

RUN npm install

CMD ["index.handler"]