AWS Lambda to Firestore error: cannot import name 'cygrpc'

AWS Lambda to Firestore error: cannot import name 'cygrpc'

在我的 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。

关于解决此问题的任何提示?

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

Node.js 用户报告了类似的问题,他们记录了 building a docker image.

的解决方法

这应该类似于任何其他 python 需要本机代码才能工作的包。也许像这种获取 scikit to work?

的方法

我希望这足以让您朝着正确的方向前进,但不幸的是,我对 AWS Lambda 一无所知:-(。

运行 遇到同样的问题,我通过使用无服务器框架的插件 serverless-python-requirements 并传递:

解决了这个问题
pythonRequirements:
    dockerizePip: true

本质上,这会将基于 c 的包(以及所有其他包)安装在一个可以工作的 docker 容器中,然后将它们符号链接到您的 lambda fn。

可以在以下位置找到有用的指南:https://serverless.com/blog/serverless-python-packaging/

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