1 回答
- 最新
- 投票最多
- 评论最多
0
【以下的回答经过翻译处理】 有一些模块不能直接添加到site-packages目录中,供AWS Lambda环境中识别。当发生这种情况时,您必须从Docker存储库获取Amazon Linux镜像,并创建自己的编译环境,以在运行在AWS Lambda上的容器版本中运行。
例如,如果您要使用Python 3.6,那么一个好的选择是amazonlinux:2018.03,以防您想安装其他软件包,如pandas,numpy,scipy。
docker run -v $(pwd):/outputs -it amazonlinux:2018.03
由于Amazon Linux基于Red Hat,因此在运行docker并已经创建了虚拟环境时,必须通过yum安装所有依赖项。
yum update -y
yum install -y \
python36 \
python36-devel \
python36-virtualenv \
python34-setuptools \
gcc \
gcc-c++ \
findutils \
rsync \
Cython \
findutils \
which \
gzip \
tar \
man-pages \
man \
wget \
make \
zip
对于lxml,您还需要安装以下内容:
(lambda_docker) bash-4.2# yum install libxml2
...
(lambda_docker) bash-4.2# yum install libxslt
...
您可以像往常一样安装模块:
pip3.6 install lxml
然后,创建您的函数lambda_function.py,并将其添加到您的docker会话中的zipped package pushd-ed和popd-ed中。
from lxml import etree
def lambda_handler(event, context):
print(__name__)
print(etree.LXML_VERSION)
在创建之后:
zip -g site-packages.zip lambda_function.py
上传之前,您可以检查您的zip文件是否包含lxml目录。
\[jonathan@docker lambda_docker]$ unzip -l site-packages.zip
Archive: site-packages.zip
Length Date Time Name
--------- ---------- ----- ----
0 06-29-2019 23:09 __pycache__/
277 06-29-2019 23:09 __pycache__/easy_install.cpython-36.pyc
126 06-29-2019 23:09 easy_install.py
119 06-29-2019 23:29 lambda_function.py
0 06-29-2019 23:21 lib/
0 06-29-2019 23:39 lxml/
0 06-29-2019 23:37 lxml-4.3.4.dist-info/
4 06-29-2019 23:37 lxml-4.3.4.dist-info/INSTALLER
2954 06-29-2019 23:37 lxml-4.3.4.dist-info/METADATA
13384 06-29-2019 23:37 lxml-4.3.4.dist-info/RECORD
109 06-29-2019 23:37 lxml-4.3.4.dist-info/WHEEL
5 06-29-2019 23:37 lxml-4.3.4.dist-info/top_level.txt
7668 06-29-2019 23:37 lxml/ElementInclude.py
551 06-29-2019 23:37 lxml/__init__.py
0 06-29-2019 23:37 lxml/__pycache__/
3331 06-29-2019 23:37 lxml/__pycache__/ElementInclude.cpython-36.pyc
...
然后上传zip文件,在lambda中创建一个空的测试 {}.
结果如下
START RequestId: bb240a17-c2dd-4d63-92c8-fa7561c09f64 Version: $LATEST
lambda_function
(4, 3, 4, 0)
END RequestId: bb240a17-c2dd-4d63-92c8-fa7561c09f64
REPORT RequestId: bb240a17-c2dd-4d63-92c8-fa7561c09f64 Duration: 0.30 ms Billed Duration: 100 ms
相关内容
- AWS 官方已更新 4 年前
- AWS 官方已更新 4 年前