AWS Lambda允许我们使用 Layers,以便在多个Lambda函数之间共享公共代码和库。然而,当Lambda Layer中的依赖项太大时,可能会导致Lambda函数运行时超出最大内存限制,从而失败。
要解决这个问题,我们可以使用Docker将所需的库打包到Lambda Layer中。Docker容器使得在本地环境中构建和打包依赖项更加容易,并最终以Lambda Layer的格式导出。
下面是一个示例的Dockerfile:
# 指定基础镜像,如Python等
FROM public.ecr.aws/lambda/python:3.8
# 通过以下方式安装软件包
RUN pip install gensim pandas nltk scipy -t /opt/python
# 将工作目录指向需要导出的依赖项所在的目录
WORKDIR /opt/python
# 将依赖项导出到.zip文件
RUN zip -r9 /tmp/lambda-layer.zip .
在Dockerfile所在目录中构建一个docker镜像,并运行它:
docker build -t lambda-layer .
docker run -v $(pwd):/outputs lambda-layer cp /tmp/lambda-layer.zip /outputs/lambda-layer.zip
最后,将zip文件上传到Lambda Layer并在Lambda函数中引用。
上一篇:AWSLambda层