本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
系统概述和架构
Amazon AppSync 使开发人员能够使用托管的 GraphQL 服务与他们的数据进行交互。与传统网关相比,GraphQL 具有许多优势,它鼓励可指定的编码风格,可与多种新式工具和框架顺畅配合,包括 React、React Native、iOS 和 Android。
建筑概念

GraphQL 代理
运行 GraphQL 引擎,处理请求并将它们映射到逻辑函数,以便进行数据操作或触发的组件。数据解析过程针对您的数据源执行批处理操作(称为数据加载程序)。此组件还管理冲突检测和解析策略。
操作
Amazon AppSync 支持三个 GraphQL 操作
-
查询-只读提取操作
-
突变-写入操作后执行读取操作
-
订阅-接收响应事件的数据的长期请求
操作
Amazon AppSync 定义了一种动作。该动作是向连接的订阅者发送通知,这是更改的结果。GraphQL 订阅之后进行握手过程,客户端即可成为订阅者。
数据源
持久性存储系统或触发器,以及访问该系统或触发器的凭证。您的应用程序状态由数据源中定义的系统或触发器进行管理。数据源的示例包括 NoSQL 数据库、关系数据库、Amazon Lambda函数和 HTTP API。
解析程序
将 GraphQL 负载转换为底层存储系统协议并进行执行(如果调用者已获得授权)的函数。编写的 JavaScript 解析器由定义其执行逻辑的代码定义。用 VTL 编写的解析器由请求和响应映射模板组成,这些模板包含转换和执行逻辑。
管道解析器
管道解析程序是允许对一个或多个数据源执行多个操作的解析程序。管道解析程序由一系列函数组成。每个函数按顺序执行,并且可以针对预定义的数据源执行单个操作。管道解析器支持 VTL 和 JavaScript.
单位解析器
单元解析程序是针对预定义的数据源执行单一操作的解析程序。单位解析器支持 VTL。
函数
函数定义可跨管道解析程序使用的单一操作。可以重用函数以在整个 GraphQL 代理中执行冗余逻辑。函数由请求和响应映射模板、数据源名称和版本组成。
身份
调用者的表示形式,以一组凭证为基础,这些凭证必须随每个请求发送给 GraphQL 代理。它包括调用解析程序的权限。身份信息还会作为上下文传递给解析程序和冲突处理程序,以执行额外的检查。
Amazon AppSync 客户
定义 GraphQL 操作的位置。客户端在将请求提交给 GraphQL 代理之前,会对请求语句执行适当的授权包装。响应保留在离线存储中,更改是以直接写入的模式进行的。