【发布时间】:2019-09-09 11:12:32
【问题描述】:
我在 AWS lambda 上成功使用了 Pychromeless repo。
现在我需要使用 NaCL 依赖来解密一个字符串,但是我得到了
Unable to import module 'lambda_function': /var/task/lib/nacl/_sodium.abi3.so
带有补码
invalid ELF header
在 AWS Lambda 上运行函数时。
我知道这是与 AWS Lambda 环境相关的特定问题,因为我可以在我的 Mac 上的 docker 内运行该函数。
这是我的 requirements.txt 文件
boto3==1.6.18
botocore==1.9.18
selenium==2.53.6
chromedriver-install==1.0.3
beautifulsoup4==4.6.1
certifi==2018.11.29
chardet==3.0.4
editdistance==0.5.3
future==0.17.1
idna==2.7
python-telegram-bot==10.1.0
requests==2.19.1
soupsieve==1.7.3
urllib3==1.23
PyNaCl==1.3.0
这里是 dockerfile
FROM lambci/lambda:python3.6
MAINTAINER tech@21buttons.com
USER root
ENV APP_DIR /var/task
WORKDIR $APP_DIR
COPY requirements.txt .
COPY bin ./bin
COPY lib ./lib
RUN mkdir -p $APP_DIR/lib
RUN pip3 install -r requirements.txt -t /var/task/lib
还有makefile:
clean:
rm -rf build build.zip
rm -rf __pycache__
fetch-dependencies:
mkdir -p bin/
# Get chromedriver
curl -SL https://chromedriver.storage.googleapis.com/2.37/chromedriver_linux64.zip > chromedriver.zip
unzip chromedriver.zip -d bin/
# Get Headless-chrome
curl -SL https://github.com/adieuadieu/serverless-chrome/releases/download/v1.0.0-37/stable-headless-chromium-amazonlinux-2017-03.zip > headless-chromium.zip
unzip headless-chromium.zip -d bin/
# Clean
rm headless-chromium.zip chromedriver.zip
docker-build:
docker-compose build
docker-run:
docker-compose run lambda src/lambda_function.lambda_handler
build-lambda-package: clean fetch-dependencies
mkdir build
cp -r src build/.
cp -r bin build/.
cp -r lib build/.
pip install -r requirements.txt -t build/lib/.
cd build; zip -9qr build.zip .
cp build/build.zip .
rm -rf build
没有解密部分,代码运行良好。所以这个问题是 100% 与 PyNaCl 相关的。
对解决这个问题有帮助吗?
【问题讨论】:
-
这么快?
numpy/core/multiarray.so和/lib/nacl/_sodium.abi3.so是两个不同的东西。唯一的相似之处是 lambda 抛出的错误:invalid ELF header。请不要让我的问题无效,伙计。 -
好吧,我正在使用 docker。所以,我期待我的 dockerfile 有一些有用的提示/行。如果我需要“启动一个 ec2 实例并创建具有必要依赖项的 virtualenv”,那么 docker 有什么用?
-
你如何运行你的容器?
-
用我的 makefile 更新问题。
标签: python python-3.x docker aws-lambda nacl-cryptography