2

在我的AWS拉姆达的Python 3.6的功能我想使用谷歌公司的FireStore(云公司的FireStore BETA)用于高速缓存的目的,但只要我添加AWS lambda来公司的FireStore错误:无法导入名称“cygrpc”

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。

任何提示我怎么能解决这个问题?

回答

1

Firestore的python客户端依赖于GRPC的基于C的实现。这在AWS Lambda中默认情况下不起作用。

Node.js用户报告过类似的问题,他们已经记录了一个解决方案building a docker image

这应该类似于任何获取任何其他需要本地代码工作的python包。也许像这种方法获得scikit to work

我希望这是足以让你在正确的方向前进,但不幸的是我不知道的AWS LAMBDA :-(什么。

0

陶然成同样的问题,我解决它通过使用插件serverless-python-requirements无服务器架构和传球:

pythonRequirements: 
    dockerizePip: true 

本质上,这将安装你的c-基于包(和所有其他包)的码头工人,容器,其中它的工作,然后将这些符号链接到你的拉姆达FN

一个有用的。指导可以发现于:https://serverless.com/blog/serverless-python-packaging/

插件:https://github.com/UnitedIncome/serverless-python-requirements

相关问题