Amazon web services AWS Lambda上的Firebase listen()

Amazon web services AWS Lambda上的Firebase listen(),amazon-web-services,firebase,aws-lambda,firebase-admin,Amazon Web Services,Firebase,Aws Lambda,Firebase Admin,我正在创建一个具有多种功能的无服务器基础架构。到目前为止,我已经使用AWS sam cli在AWS lambda上发布了一个新函数 最后一个函数是我的firebase侦听器,它应该触发某些aws lambda函数 首先,我想创建一个新函数并添加侦听器,如下所示: import firebase_admin cred = firebase_admin.credentials.Certificate(cert_json) app = firebase_admin.initializ

我正在创建一个具有多种功能的无服务器基础架构。到目前为止,我已经使用
AWS sam cli
在AWS lambda上发布了一个新函数

最后一个函数是我的firebase侦听器,它应该触发某些aws lambda函数

首先,我想创建一个新函数并添加侦听器,如下所示:

import firebase_admin    
cred   = firebase_admin.credentials.Certificate(cert_json)
app    = firebase_admin.initialize_app(cred, config)
bucket = storage.bucket(app=app)

node_to_listen = '/alerts/'
firebase_admin.db.reference(node_to_listen).listen(listener)
然而,问题在于AWS lambda似乎不是为了连续运行功能而设计的,而只是由事件触发。Firebase listen()函数也是如此,这意味着我们遇到了鸡或蛋的问题,谁触发了谁


因此,如何发布firebase侦听器函数以及在何处发布?是否应将其部署到其他地方(如Heroku?),以便持续侦听事件请求并将其发送给aws lambda?或者有没有办法将这两者联系起来?

据我所知,在任何“功能即服务”环境中,都无法保持活动侦听器。此类环境的全部目的是运行(短)工作负载以响应事件。您试图通过保留一个侦听器来实际触发事件,这根本不符合FaaS模型

我可以看到两种解决方案:

  • 在保持活动进程的环境中实现侦听器
  • 在FaaS环境上实现侦听器,该环境本身可以侦听Firebase实时数据库事件。当前唯一能够做到这一点的环境是它,它已经做到了。然后从云函数触发Lambda函数
  • 第二个解决方案是唯一一个真正感觉完全没有服务器的解决方案,但从谷歌云功能触发Amazon Lambda似乎有点奇怪


    目前正在进行允许FaaS提供商之间进行互操作的工作。但我不确定当前状态(链接到spec/working group welcome),也不确定您的场景是否包含在其中。

    据我所知,在任何Functions-as-a-Service环境中都无法保持活动侦听器。此类环境的全部目的是运行(短)工作负载以响应事件。您试图通过保留一个侦听器来实际触发事件,这根本不符合FaaS模型

    我可以看到两种解决方案:

  • 在保持活动进程的环境中实现侦听器
  • 在FaaS环境上实现侦听器,该环境本身可以侦听Firebase实时数据库事件。当前唯一能够做到这一点的环境是它,它已经做到了。然后从云函数触发Lambda函数
  • 第二个解决方案是唯一一个真正感觉完全没有服务器的解决方案,但从谷歌云功能触发Amazon Lambda似乎有点奇怪


    目前正在进行允许FaaS提供商之间进行互操作的工作。但我不确定当前状态(链接到spec/workinggroup welcome),也不确定您的场景是否会包含在其中。

    您可以创建一个侦听器,以按照大约每分钟的计划触发Lambda。所有其他侦听器应该触发的lambda都可以订阅AWS SNS主题。所以监听器会将消息发布到SNS主题,然后主题会触发所有订阅的lambda。是的,但关键是Firebase监听器会不断地监听事件,然后根据函数listener(事件)中的定义即时触发写操作。这听起来更像是一个cron作业,大约每分钟执行一个函数。如果Firebase在该分钟内发生更改,则不会触发正确的响应。我们需要在Firebase已识别更改时触发该操作。因此负责Firebase更改的功能无法发布更改事件?是的,它可以发布更改事件,但需要在某个位置运行。如果它在AWS lambda上运行,那么它将不会连续运行。侦听器连续运行是有意义的,但是进行更改的函数可以在SNS中实时发布事件以调用下游函数?如果我误解了,很抱歉。您可以创建一个侦听器来触发Lambda,时间安排为每分钟左右。所有其他侦听器应该触发的lambda都可以订阅AWS SNS主题。所以监听器会将消息发布到SNS主题,然后主题会触发所有订阅的lambda。是的,但关键是Firebase监听器会不断地监听事件,然后根据函数listener(事件)中的定义即时触发写操作。这听起来更像是一个cron作业,大约每分钟执行一个函数。如果Firebase在该分钟内发生更改,则不会触发正确的响应。我们需要在Firebase已识别更改时触发该操作。因此负责Firebase更改的功能无法发布更改事件?是的,它可以发布更改事件,但需要在某个位置运行。如果它在AWS lambda上运行,那么它将不会连续运行。侦听器连续运行是有意义的,但是进行更改的函数可以在SNS中实时发布事件以调用下游函数?对不起,如果我误解了,我理解。但是,如果在云功能方面有类似于AWS Lambda的东西,那么这就是解决方案了吗?另外,firebase侦听器的典型用例是什么?它通常排名第一吗?Lambda和GCF都是FaaS环境。你想用你的代码完成什么?想法是有一个后台进程来创建某些报告/元数据的摘要。将新报告添加到Firebase时,该函数将加载当天的所有报告,并使用新的更新值创建摘要。然后它将聚合值再次存储在不同节点上的FB上,这样在仪表板中我们就不必执行此过程。老实说,我刚刚从Firebase查看了GCF,这正是我需要的。与Amazon Lambda的文档相比,Firebase/Google Cloud(不确定最近的区别)是