<返回更多

使用 AWS AppSync 创建实时控制面板

2022-12-11  今日头条  科技狠活与软件技术
加入收藏

本文介绍了 AppSync,并列出了使用无服务器 GraphQL 开发实时仪表板的主要构建块。

 

在这个快节奏的世界中,应用程序需要实时传播信息。一些示例是跟踪货物移动、跟踪股票价格、分析正在进行的足球比赛的数据等。此外,人们使用各种设备(如台式机、移动设备和标签)来访问这些应用程序。此外,一些应用程序需要此信息和警报是可操作的,即用户可以更新一个或多个属性。例如,货物处理设施可以通过执行到达扫描来更新货物的状态。因此,从本质上讲,我们正在寻找可以从多个设备访问的交互式实时仪表板。在本文中,我将讨论如何使用 AWS AppSync 构建这种控制面板。我将采用一个常见的用例并为该用例创建一个参考解决方案架构

为不熟悉这项服务的人快速介绍 AWS AppSync。AppSync 是一种无服务器的 GraphQL 接口,具有强大的可扩展性。GraphQL 是一种数据语言,旨在使应用程序能够从服务器获取数据。它具有声明式、自文档化的风格。在 GraphQL 操作中,客户端指定在服务器返回数据时如何构建数据。这使得客户端可以只查询它需要的数据,以它需要的格式。

用例

 

让我们以互联网服务提供商为例。他们在广阔的地理区域开展业务。他们需要一个实时仪表板来显示所有活动的服务请求。一个区域的管理员可以查看整个区域。他们应该能够根据他们的位置向服务工程师分配开放工单。服务工程师将从他们的移动设备访问仪表板,并且应该能够将工单的状态更新为“进行中”、“完成” 等管理员应该能够实时查看状态更新。需要考虑的另一种情况是,现场工程师的互联网连接通常很差/没有。他们应该能够更新工单的状态,即使他们处于离线状态,一旦他们连接上,数据应该自动同步回服务器。

解决方案

 

该解决方案的主要组件是 AppSync API。AppSync 可以连接到多个源,也可以有自定义解析器。但是,在此示例中,API 使用 DynamoDB 作为其数据存储。AppSync API 支持三种操作——变更、订阅和查询。突变用于插入/更新记录。订阅以某种方式补充了变异操作,即只要有变异,订阅 API 的该应用程序的所有用户都会收到更新。这里值得一提的是,在 DynamoDB 数据库中进行简单的插入或更新不会向订阅者发送回任何通知。只有通过 AppSync API 的变更才会流向订阅者。另一方面,Query 是 API 上的简单 GraphQL 查询。

现在,让我们假设有一个系统可以提出服务请求,将请求放到 EventBridge 上。一旦 EventBridge 上有消息,就会触发Lambda 函数,该函数使用突变操作将消息推送到 AppSync API。AppSync 接收消息并将其保存在后备 DynamoDB 数据存储中。此时工单状态为open。

可以使用任何标准 JAVAScript 框架构建此应用程序的 UI。这将托管在 AWS S3 上并使用 CloudFront 分发进行分发。此应用程序的登录用户将根据某些参数订阅 AppSync API。例如,库克县的管理员可能会使用以下标准进行订阅

county: "Cook", status: "Open"

列出县内所有未开票。然后,管理员可以将未结工单分配给现场工程师。这将导致对 AppSync API 进行另一次变更操作,并且票证的状态将更改为“已分配”。

现场工程师登录到应用程序并订阅了条件

assignedTo: "<login-id>", status: "Assigned"

将能够看到他需要处理的工单列表。一旦他完成了工单的处理,他就会将工单的状态更改为“完成”。这将导致另一个更新记录的突变。每个感兴趣并订阅接收此票证更新的人都将在票证完成后立即收到有效的更新。在这里值得一提的是,AppSync 也可以在离线模式下工作。因此,如果现场工程师由于某种原因离线,他的更新将在客户端排队。每当他重新上线时,所有未决的突变都将通过后端。这是基于 AppSync API 上的变更和订阅的交互式仪表板的工作方式。

接下来,我将稍微讨论一下身份验证和授权。在这种情况下,最好的做法是使用公司的 Active Directory,假设存在一个来处理身份验证。Cognito 可以设置为与企业 AD 联合。AppSync 与 Cognito 本地连接。在这种情况下,每当用户登录到应用程序时,应用程序将使用相应的用户 ID 订阅 AppSync API,并将根据位置、角色、状态等自动过滤结果。其他授权方法,如自定义 Lambda 授权方、OpenId也可以使用连接、API 密钥等。

保护 AppSync API 的另一种方法是在 API 之上配置 Web 应用程序框架 (WAF),以保护它免受常见的 Web 攻击,如跨站点脚本和SQL 注入。WAF 与 AppSync API 原生集成。强烈建议使用所有面向公众的 AppSync API 配置 WAF。

结论

 

AWS AppSync 是一种多功能服务,可用于设计不同类型的应用程序。我已经讨论了我们可以多么轻松地设置交互式实时仪表板。AppSync 还可用于在客户端和服务器之间创建网络套接字握手,以设计实时聊天应用程序。它还可以简单地用作后端服务 API 或聚合来自 SQL、NoSQL、微服务等多个来源的数据。AWS AppSync 可能很快成为许多数字产品和应用程序不可或缺的一部分。

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>