Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
向Lambda函数添加依赖项:zip还是docker?_Docker_Aws Lambda_Zip - Fatal编程技术网

向Lambda函数添加依赖项:zip还是docker?

向Lambda函数添加依赖项:zip还是docker?,docker,aws-lambda,zip,Docker,Aws Lambda,Zip,所以我经常在AWS Lambda上制作无服务器Python程序,并且经常需要添加依赖项。您可以使用zip文件或Dockerfile添加这些文件(请参阅)。现在我认为zip文件可以正常工作,但是Dockerfile当然是一种更新和更先进的技术。然而,我真的想不出它为这个特定用例提供了什么优势 你更喜欢哪一种?为什么 压缩管道示例: FROM public.ecr.aws/lambda/python:3.8 RUN pip3 install requests bs4 boto3 COPY lambd

所以我经常在AWS Lambda上制作无服务器Python程序,并且经常需要添加依赖项。您可以使用zip文件或Dockerfile添加这些文件(请参阅)。现在我认为zip文件可以正常工作,但是Dockerfile当然是一种更新和更先进的技术。然而,我真的想不出它为这个特定用例提供了什么优势

你更喜欢哪一种?为什么

压缩管道示例:

FROM public.ecr.aws/lambda/python:3.8
RUN pip3 install requests bs4 boto3
COPY lambda_function.py ${LAMBDA_TASK_ROOT}
CMD [ "stonksoverflow.handler" ]
pip安装--target./package请求boto3-bs4
光盘包装;zip-r../stonkswoverflow.zip。
光盘zip-g stonkswoverflow.zip lambda_function.py
aws lambda创建函数--函数名lambda_函数--zip文件fileb://stonksoverflow.zip --处理程序lambda_function.lambda_处理程序--运行时Python 3.8--角色arn:aws:iam::123456789:角色/stonksoverflow
Docker管道示例:

FROM public.ecr.aws/lambda/python:3.8
RUN pip3 install requests bs4 boto3
COPY lambda_function.py ${LAMBDA_TASK_ROOT}
CMD [ "stonksoverflow.handler" ]

与.zip方法相比,Lambda管理的Docker方法有两个主要优势:

  • 使用.zip方法,如果您的一个依赖项或子依赖项是用C编写的(例如NumPy、lxml),那么它必须构建在“类似于AWS Lambda(Amazon Linux)中的环境”的环境上。Docker允许您在AmazonLinux环境中构建任何依赖项,确保它可以远程构建。这很好,因为您避免了一次上载一个库并希望它们成功导入的繁琐调试过程

  • 因为Lambda在amazonlinux上运行,所以在带有amazonlinux映像的Docker容器中运行代码可以让您像在Lambda中运行一样测试代码。您不再需要希望当代码在Lambda中运行时,它将以与本地相同的方式运行——在推送之前您会知道

  • 以下是我发现有用的几篇文章: