Я использую библиотеку криптографии в AWS Lambda. Я скомпилировал пакет, используя pip на виртуальной машине Amazon Linux. Я загрузил пакет как слой. В любом случае, каждый раз, когда я вызываю библиотеку, у меня возникает ошибка, которая не является описательной:
Unable to import module 'lambda_function': libffi-ae16d830.so.6.0.4: cannot open shared object file: No such file or directory
Как видите, ошибка не в том, что я не нашел библиотеку, это еще один общий модуль, который мне не удалось найти.
Вот пример кода, который я пытаюсь выполнить на Lambda:
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
from cryptography.fernet import Fernet
password_provided = "test123"
password = password_provided.encode()
salt = b'test_'
kdf = PBKDF2HMAC(
algorithm=hashes.SHA256(),
length=32,
salt=salt,
iterations=100000,
backend=default_backend()
)
key = base64.urlsafe_b64encode(kdf.derive(password))
message = "message from db".encode()
f = Fernet(key)
encrypted = f.encrypt(message)
print(encrypted)
f = Fernet(key)
decrypted = f.decrypt(encrypted)
print(decrypted.decode("utf-8"))
Я не впервые собираю библиотеку для работы с AWS Lambda, но в этом случае даже я собираю библиотеку криптографии. Что я должен добавить или изменить?
[Изменить]
Я обнаружил, что в созданном мною zip-файле отсутствует библиотека, как и внутри скрытой папки. Я застегнул молнию, используя '.' вместо '*', но теперь я работаю с новой проблемой, когда я запускаю лямбду, я получил это:
Unable to import module 'lambda_function': /opt/cryptography/hazmat/bindings/_constant_time.so: undefined symbol: PyInt_FromLong
Есть идеи?