libffi-d78936b1.so.6.0.4: cannot open shared object file Error on AWS Lambda function

空扰寡人 提交于 2020-07-18 22:17:09

问题


I am trying to deploy a python Lambda package with watson_developer_cloud sdk. Cryptography is one of many dependencies this package have. I have build this package on Linux machine. My package includes .libffi-d78936b1.so.6.0.4 hidden file too. But it is still not accessible to my lambda function. I am still getting 'libffi-d78936b1.so.6.0.4: cannot open shared object file' Error. I have built my packages on Vagrant server, using instructions from here: https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example-deployment-pkg.html#with-s3-example-deployment-pkg-python

Exact error:

Unable to import module 'test_translation': libffi-d78936b1.so.6.0.4: cannot open shared object file: No such file or directory

On a note, as explained in this solution, I have already created my package using zip -r9 $DIR/lambda_function.zip . instead of *. But it is still not working for me.

Any direction is highly appreciable.


回答1:


The libffi-d78936b1.so.6.0.4 is in a hidden folder named .libs_cffi_backend.

So to add this hidden folder in your lambda zip, you should do something like:

zip -r ../lambda_function.zip * .[^.]*

That will create a zip file in the directory above with the name lambda_function.zip, containing all files in the current directory (first *) and every thing starting with .* but not ..* ([^.])




回答2:


In a situation like this, I would invest some time setting up a local SAM environment so you can:

1 - Debug your Lambda

2 - Check what is being packaged and the files hierarchy

https://docs.aws.amazon.com/lambda/latest/dg/test-sam-cli.html

Alternatively you can remove this import and instrument your lambda function to print some of the files and directories it "sees".

I strongly recommend you giving SAM a try though, since it will make not only this debugging way easier but any further test you need to perform down the road. Lambdas are tricky to debug.




回答3:


A little late, and I would comment on Frank's answer but not enough reputation.

I was including the the hidden directory .libs_cffi_backend in my deployment package, but for some reason Lambda could not find the libffi-d78936b1.so.6.0.4 file located within.

After copying this file into the same 'root' level directory as my lambda handler it was able to load the dependency and execute.

Also, make sure all the files in the deployment package are readable chmod -R 644 .



来源:https://stackoverflow.com/questions/51219096/libffi-d78936b1-so-6-0-4-cannot-open-shared-object-file-error-on-aws-lambda-fun

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!