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

相關問題