在我的AWS Lambda Python 3.6功能上,我想使用Google Firestore(Cloud Firestore BETA)进行缓存,但是只要我添加
from google.cloud import firestore
到我的Python脚本并将ZIP上传到AWS Lambda函数,Lambda测试返回错误
Unable to import module 'MyLambdaFunction': cannot import name 'cygrpc'.
AWS CloudWatch日志不包含有关错误的任何详细信息,只是包含相同的错误消息。
Lambda函数在我的本地开发机器(Windows 10)上运行良好,我可以写入Firestore。如果我注释掉导入和所有与Firestore相关的行,它也适用于AWS。
我有什么建议可以解决这个问题吗?
答案 0 :(得分:2)
Firestore的python客户端依赖于GRPC的基于C的实现。这似乎在AWS Lambda中默认不起作用。
Node.js用户报告了类似的问题,他们已经记录了building a docker image的解决方法。
这应该类似于获取任何其他需要本机代码才能工作的python包。也许这种方法可以获得scikit to work?
我希望这足以让你朝着正确的方向前进,但不幸的是我对AWS Lambda一无所知: - (。
答案 1 :(得分:1)
遇到同样的问题,我使用插件serverless-python-requirements
解决了无服务器框架并传递:
pythonRequirements:
dockerizePip: true
基本上,这会将基于c的软件包(以及所有其他软件包)安装在可以工作的docker容器中,然后将它们符号链接到lambda fn。
可在以下网址找到有用的指南:https://serverless.com/blog/serverless-python-packaging/
插件:https://github.com/UnitedIncome/serverless-python-requirements