【问题标题】:Notify clients after AWS lambda function execution在 AWS lambda 函数执行后通知客户端
【发布时间】:2019-07-31 13:22:54
【问题描述】:

我有一个在前端使用 angular 并在后端使用 AWS 作为后端的应用程序,我需要添加一些将使用来自外部源的数据的功能。

我已经编写了一个 Lambda 函数,它将被安排在每 X 分钟运行一次,并且应该执行以下步骤:

  1. 从外部来源检索数据
  2. 过程数据
  3. 将处理后的数据存储在自己的数据库中
  4. 通知客户(前端)有新信息可用

问题在于如何执行第 4 步。

我已经研究了一段时间,发现了一些可以使用的 AWS 服务,但似乎仍然没有一个完全匹配。

主要的是 AWS AppSync,但这听起来有点矫枉过正,因为我只需要简单的通知。

还有一些 AWS IOT 服务,但这似乎是题外话。

还有 AWS 简单通知服务,但 AFAIK 仅适用于通知其他服务(通过 POST 请求)。

这些服务中的任何一个都适合这个用例吗?如果不是,那哪个是适合的 AWS 服务?

【问题讨论】:

    标签: angular amazon-web-services aws-lambda


    【解决方案1】:

    您可以将 Webhook 与 AWS SNS 一起使用,然后它可以通过套接字实时进一步通知您的 webapp。

    AWS 文档:https://docs.aws.amazon.com/sns/latest/dg/sns-http-https-endpoint-as-subscriber.html

    flow

    【讨论】:

    • 不确定我是否明白你的意思。我如何使用这种架构向客户端推送通知?
    • 您需要阅读SNS、主题和订阅主题
    • @Neo 感谢您的回答和流程!关键是我没有服务器,所有的后端都是基于微服务,后台即服务,架构。因此,我不是在寻找仅用于设置 Web 套接字的编写和托管服务器。我想为此使用 AWS 服务,就像我一直用于其他领域一样:用于构建 API 的 API Gateway、用于处理的 Lambda、用于文件的 S3、用于身份验证的 Cognito,等等。
    • 如果您使用 API Gateway 作为客户端的 web api,您可以使用相同的方式创建 websocket API,如果您想检查:aws.amazon.com/blogs/compute/…。希望这会有所帮助。
    • 再次感谢@Neo!将检查并返回。
    【解决方案2】:

    您的客户可以通过以下几种方式获取数据:

    Pull - 定期检查 API 端点是否有新记录。您将收到比必要更多的请求,但它很容易实现。

    推送 - 双向,有一个套接字连接,可以将更新推送到您的客户端。这就是 AppSync 订阅的本质,它可能看起来有点矫枉过正,但它比 Amazon API Gateway https://aws.amazon.com/blogs/compute/announcing-websocket-apis-in-amazon-api-gateway/ 中的替代 WebSocket API 更容易。

    【讨论】:

    • 丹妮,感谢您的回答!拉式替代方案无疑是最容易实施的替代方案,但它会浪费更多资源,并且仍然无法提供尽可能好的用户体验。 API Gateway WS api 是我在@Neo 评论之前不知道的。这似乎是一个不错的选择,但我仍然需要单独跟踪每个客户端的 connectionId(这不是一个大问题,但也不可取)。我仍在寻找更简单的解决方案。
    猜你喜欢
    • 1970-01-01
    • 2022-12-09
    • 2016-10-16
    • 2018-12-14
    • 2020-07-29
    • 2016-07-26
    • 2016-01-19
    • 2021-08-16
    • 1970-01-01
    相关资源
    最近更新 更多