亚马逊AWS官方博客

Amazon AppSync 简介 – 使用实时和离线功能构建数据驱动型应用

在当今时代,我们几乎都会利用移动设备和应用来让我们的生活更加轻松惬意。随着我们对手机的依赖程度不断增加,移动应用市场已呈爆炸式增长,数百万个应用竞相吸引我们的注意力。对于移动开发人员,这意味着我们必须确保我们构建的应用能够提供应用用户所需的质量和实时体验。因此,开发包括多用户数据同步、离线网络支持和数据发现等功能的移动应用已变得至关重要。我最近通过阅读 InfoQDZone 等出版物和移动开发博客 AlleviateTech 上的几篇文章,了解了移动开发趋势,我认为提供上述功能的关键要素之一是云驱动型移动应用。这似乎完全正确,因为它涉及到移动数据同步和数据存储。

既然如此,我认为现在是我宣布新服务 AWS AppSync 的最佳时机,该服务用于构建由云中的数据密集型服务驱动的创新移动应用。AWS AppSync 是一项完全托管的无服务器式 GraphQL 服务,可提供实时数据查询、同步、通信和离线编程功能。对于那些不熟悉开放式 GraphQL 规范的人,让我简要分享一些相关信息。GraphQL 是一种响应式数据查询语言和服务器端运行时,用于查询可检索实时数据和执行动态查询的数据源。您可以使用 GraphQL 构建响应式 API,以便在构建客户端应用程序时使用。GraphQL 在应用程序层工作,并提供用于定义架构的类型系统。这些架构可用作规范,以定义应如何对数据执行操作,以及在检索时应如何设置数据结构。此外,GraphQL 还有一个声明性编码模型,它受许多客户端库和框架 (包括 React、React Native、iOS 和 Android) 的支持。

现在,GraphQL 开放标准查询语言的强大功能正在通过 AWS AppSync向您提供丰富的托管服务。借助 AppSync ,开发人员可以轻松简化跨多个数据源的数据检索和处理操作,从而使其能够快速建立原型,构建和创建强大的协作式多用户应用程序。AppSync 在设备处于连接状态时保持数据更新,但使开发人员能够通过在本地缓存数据并在连接可用时同步本地数据,来构建脱机工作的解决方案。

我们来讨论 AWS AppSync 的一些关键概念以及该服务的工作原理。

AppSync 概念

  • AWS AppSync 客户端:定义操作、封装请求的授权详细信息以及管理离线逻辑的服务客户端。
  • 数据源:数据存储系统或用于存储数据的触发器
  • 身份:随 GraphQL 代理的请求一起提供的一组包含权限和标识上下文的凭证
  • GraphQL 代理:用于处理和映射请求、处理冲突解决方法以及管理精细访问控制的 GraphQL 引擎组件
  • 操作:AppSync 中支持的三种 GraphQL 操作之一
    • 查询:对数据的只读获取调用
    • 更改:获取之后写入数据,
    • 订阅:为响应事件而接收数据的持续连接。
  • 操作:已连接订阅者收到的 GraphQL 订阅通知。
  • Resolver:使用请求和响应映射模板来转换和执行数据源负载的函数

如何使用

创建一个架构来定义所需 GraphQL API 的类型和功能,并将其绑定到 Resolver 函数。可以创建架构来镜像现有数据源,或者 AWS AppSync 可以基于架构定义自动创建表。开发人员还可以使用 GraphQL 功能进行数据发现,而无需了解后端数据源。建立架构定义之后,可以使用操作请求 (如查询操作) 来配置 AWS AppSync 客户端。客户端向 GraphQL 代理提交操作请求以及标识上下文和凭证。GraphQL 代理将此请求传递给 Resolver,该函数会根据预先配置的 AWS 数据服务 (如 Amazon DynamaoDB 表、AWS Lambda 函数,或使用 Amazon Elasticsearch 的搜索功能) 映射和执行请求负载。Resolver 在单个网络调用中执行对其中一个或全部服务的调用,从而最大限度地减少 CPU 周期和带宽需求,并将响应返回到客户端。此外,客户端应用程序还可以在代码中按需更改数据要求,而 AppSync GraphQL API 将相应地动态映射数据请求,从而允许设计原型和加快开发速度。

为快速了解该服务,我将转到 Amazon AppSync 控制台。然后单击 Create API 按钮开始使用。

当出现 Create new API 屏幕时,我会将新 API 命名为 TarasTestApp,由于我只是想了解该新服务,因此我将选择 Sample schema 选项。您可能会从屏幕上的信息性公告对话框中注意到,在使用示例架构时,AWS AppSync 将自动为我创建 DynamoDB 表和 IAM 角色。它还将代表我部署 TarasTestApp API。查看控制台提供的示例架构之后,单击 Create 按钮来创建我的测试 API。

创建 TaraTestApp API 并代表我预置关联的 AWS 资源之后,我可以更新架构、数据源或将我的数据源连接到解析程序。我还可以通过从 GitHub 克隆示例存储库并下载随附的 GraphQL 架构,将我的 GraphQL API 集成到 iOS、Android、Web 或 React Native 应用程序中。这些应用程序示例非常有用,可以帮助您入门,并且它们经过预先配置,可在离线情况下运行。

如果在控制台上选择 Schema 菜单选项,就可以更新并查看 TarasTestApp GraphQL API 架构。


此外,如果我在控制台中选择“Data Sources”菜单选项,就可以看到现有数据源。在此屏幕中,我可以根据需要更新、删除或添加数据源。

接下来,选择 Query 菜单选项,然后便会转到用于编写和测试查询的控制台工具。由于我选择了示例架构,并且 AWS AppSync 服务为我完成了大部分繁重的工作,因此我会尝试对我的新 GraphQL API 进行查询。

我将使用一项更改为我的架构中的事件类型添加数据。由于这是一项更改并且它首先写入数据,然后读取数据,因此我希望该查询返回 name 和 where 的值。

如果我转到为架构中的事件类型创建的 DynamoDB 表,将会看到查询中的值已成功写入该表。现在,基于来自数据源的 GraphQL API 架构编写和检索数据是一项非常简单的任务,您也这样认为吧。


 总结

AWS AppSync 现已可用,目前支持 iOS、Android 和 JavaScript 应用开发。立即开始使用,并通过访问 AWS AppSync 控制台利用此托管 GraphQL 服务,或者通过在 AWS AppSync 产品页面上查看有关该服务的更多详细信息,或在有关该服务的 AWS 文档中阅读教程,了解更多信息。

Tara