ECRコンテナイメージを利用したLambda関数にて、TA-Libを用いることを試みています。
Dockerでのビルドまでは上手く行くのですが、その後、関数実行時に、"libta_lib.so.0: cannot open shared object file: No such file or directory"
とエラーが発生してしまいます。
これの解消方法をいろいろと試し、現在、下記のようなDockerfile、docker-compose.ymlの構成となっていますが、一向に解決しません。
知見をお持ちの方、ぜひ解決方法をご教示願えませんでしょうか。
- Dockerfile
Dockerfile
1FROM public.ecr.aws/lambda/python:3.8 2ENV AWS_DEFAULT_REGION ap-northeast-1 3 4RUN pip3 install --upgrade pip 5RUN yum update -y 6RUN yum groupinstall "Development Tools" -y 7RUN yum -y install wget 8RUN yum -y install tar 9RUN yum -y install gzip 10 11RUN export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH 12 13RUN wget --quiet http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz -O ta-lib-0.4.0-src.tar.gz && \ 14 tar -zxvf ta-lib-0.4.0-src.tar.gz && \ 15 cd ta-lib/ && \ 16 ./configure --prefix=/usr && \ 17 make && \ 18 make install && \ 19 cd .. && \ 20 python3 -m pip install ta-lib && \ 21 rm -R ta-lib ta-lib-0.4.0-src.tar.gz 22 23RUN pip install pipenv 24WORKDIR /workspace 25CMD pipenv install && \ 26 pipenv run dev 27 28RUN pip3 install -t ./ Image 29 30ADD . . 31 32COPY handler.py ${LAMBDA_TASK_ROOT} 33 34RUN pip3 install -r requirements.txt -t /var/task && \ 35 zip -9 deploy_package.zip handler.py && \ 36 zip -r9 deploy_package.zip * 37 38CMD mkdir lib 39CMD cp -pa /lib64/libta_lib.so.0* ./lib/ 40CMD ls -l ./lib 41 42CMD sudo -s 43CMD echo "include /usr/local/lib" >> /etc/ld.so.conf 44CMD ldconfig 45CMD ln -s /usr/local/lib/ /usr/local/ 46 47CMD sudo find / -name libta_lib.so.0 48CMD sudo vi /etc/profile 49CMD export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib 50CMD :wq 51CMD source /etc/proflie 52 53CMD [ "handler.lambdahandler" ]
- handler.py (+関連する.pyファイル)
本文中の字数制限に抵触するため、リンクを貼っておきます。
https://github.com/whitecat-22/stock_price_chart/blob/main/handler.py
- ログ
Terminal
1{ 2 "errorMessage": "Unable to import module 'handler': libta_lib.so.0: cannot open shared object file: No such file or directory", 3 "errorType": "Runtime.ImportModuleError", 4 "stackTrace": [] 5}
START RequestId: eabdc8a8-a22f-4e07-88b4-dda1582b5bb6 Version: $LATEST Import Error - unzip_requirements OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k [WARNING] 2021-06-06T07:01:46.095Z Matplotlib created a temporary config/cache directory at /tmp/matplotlib-i7nui6jm because the default path (/home/sbx_user1051/.config/matplotlib) is not a writable directory; it is highly recommended to set the MPLCONFIGDIR environment variable to a writable directory, in particular to speed up the import of Matplotlib and to better support multiprocessing. [ERROR] Runtime.ImportModuleError: Unable to import module 'handler': libta_lib.so.0: cannot open shared object file: No such file or directory Traceback (most recent call last): END RequestId: eabdc8a8-a22f-4e07-88b4-dda1582b5bb6 REPORT RequestId: eabdc8a8-a22f-4e07-88b4-dda1582b5bb6 Duration: 4599.39 ms Billed Duration: 4600 ms Memory Size: 1024 MB Max Memory Used: 80 MB
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。