首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Firebase-使用AWS Lambda Python的管理员

Firebase-使用AWS Lambda Python的管理员
EN

Stack Overflow用户
提问于 2021-02-20 19:56:25
回答 3查看 716关注 0票数 0

我目前正在编写一个要在AWS Lambda上部署的Python服务器。我想使用firebase-admin包通过FCM发送通知,并从云firestore读取数据。但是,当我尝试使用.zip文件归档将我的函数部署到AWS Lambda时,我在执行时收到以下错误:

代码语言:js
复制
[ERROR] Runtime.ImportModuleError: Unable to import module 'lambda_function': Failed to import the Cloud Firestore library for Python. Make sure to install the "google-cloud-firestore" module.

我用下面的代码安装了这个模块:

在一个文件夹中,添加我的代码文件(按照指示添加到根目录),递归地压缩它并使用aws-cli上传它,我可以清楚地看到.zip中有一个google-cloud-firestore文件夹,所以我不确定发生了什么。如有任何帮助,我们将不胜感激!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-02-22 23:24:32

你要找的是一个

LambdaLayer

..。

网上有很多资源,但本质上你想以这种格式制作一个Zip文件

*

myLayer.zip/

-- python/

- lib/

- python

X.Y

/

- site-packages/

firebase-admin

- ...

*

在哪里

X.Y

是您要瞄准的python版本吗?

然后,在亚马逊网络服务控制台或您的CI/CD中,您可以在函数的配置中添加该LambdaLayer,这允许您导入其中的所有库。

票数 1
EN

Stack Overflow用户

发布于 2021-02-28 18:56:33

问题是,firebase-admin包使用了一些在不同OSes上以不同方式编译的库,因此您需要创建一个docker镜像并在其中安装所有内容,将其压缩并作为图层上传。以下是一个示例docker文件:

代码语言:javascript
复制
FROM amazonlinux:2.0.20210126.0

RUN yum -y groupinstall "Development Tools" && \
yum -y install openssl-devel bzip2-devel libffi-devel && \
yum -y install wget && \
wget https://www.python.org/ftp/python/3.8.7/Python-3.8.7.tgz && \
yum install -y tar && \
yum install -y gzip && \
tar xvf Python-3.8.7.tgz && \
cd Python-3.8*/ && \
./configure --enable-optimizations && \
make altinstall && \
yum install -y zip && \
yum clean all


RUN python3.8 -m pip install --upgrade pip && \
python3.8 -m pip install virtualenv

RUN python3.8 -m venv myvenv
RUN source myvenv/bin/activate
RUN pip install firebase-admin -t ./python
RUN deactivate
RUN zip -r python.zip ./python/

然后复制zip文件:

代码语言:javascript
复制
docker cp container_name:python.zip ./Desktop/
票数 3
EN

Stack Overflow用户

发布于 2021-02-27 05:51:03

从外观上看,您已经正确地捆绑了代码并成功地进行了部署。之所以会出现这个错误,是因为Firestore依赖于GRPC的基于C的实现。默认情况下,这在AWS Lambda上不起作用。我目前正在创建一个变通方法,并将用我的结果更新这篇文章。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66291208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档