Я создаю функцию в AWS Lambda, которая использует пакет DLIB. У меня он работает нормально локально, затем, чтобы убедиться, что я правильно скомпилировал двоичные файлы, я создал экземпляр EC2 на основе AMI-информации, предоставленной Amazon , но я не могу правильно упаковать свои зависимости.
Это ошибка, которую я получаю от AWS Lambda при попытке проверить свою функцию:
Unable to import module 'lambda_function': /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /var/task/site-packages/dlib.cpython-36m-x86_64-linux-gnu.so)
Внутри моего пакета (хранящегося в S3 размером 49 МБ) у меня есть файл lambda_function.py
, а затем две подкаталоги с именами libs
и site-packages
. Libs
содержит файлы, такие как liblapack.so
, libquadmath.so
, libstdc++.so.6
и т. Д.
Каталог site-packages
содержит все мои зависимости для моего кода на Python - CV
, Numpy
и Dlib
. Я уже несколько дней бьюсь головой об стол. Что касается жизни, я не могу понять, как проинструктировать лямбду использовать libstdc++.so.6
, который я дал в каталоге libs
.
Я думаю, что я правильно связываю все пакеты внутри lambda_function.py
import sys
import os
# Import installed packages (in site-packages and lib)
CWD = os.path.dirname(os.path.realpath(__file__))
site_pkgs = os.path.join(CWD, "site-packages")
lib_pkgss = os.path.join(CWD, "libs")
sys.path.append(site_pkgs)
sys.path.append(lib_pkgss)
import json
import cv2
import numpy as np
import dlib
import boto3
...
Есть идеи, что мне здесь не хватает?