亚马逊AWS官方博客

AWS AppSync – 生产就绪且新增六项功能

如果您构建 (或计划构建) 数据驱动型 Web 和移动应用,并需要实时更新和离线功能,不妨试试 AWS AppSync。AWS AppSync 专为 iOS、Android、JavaScript 和 React Native 应用设计,于 2017 年在 AWS re:Invent 大会上以预览形式发布。有关详情,请单击此处。AWS AppSync 围绕开放标准查询语言 GraphQL 构建,便于应用程序从云中请求所需的精确数据。

我很高兴地宣布,AWS AppSync 服务的预览期已过,现已正式推出且已生产就绪,并增加了以下六项新功能,以便简化应用程序开发流程:

控制台日志访问 – 您现在可以在 AWS AppSync 控制台中查看在测试 GraphQL 查询、突变和订阅时生成的 CloudWatch Logs 条目。

使用模拟数据进行控制台测试 – 您现在可以在控制台中创建和使用模拟环境对象进行测试。

订阅解析程序 – 与查询和突变请求一样,您现在还可以针对 AWS AppSync 订阅请求创建解析程序。

适用于 DynamoDB 的 GraphQL 批处理操作 – 您现在可以在一个或多个表中使用 DynamoDB 的批处理操作 (BatchGetItemBatchWriteItem)。在解析程序函数中。

CloudWatch 支持 – 您现在可以使用 Amazon CloudWatch 指标和 CloudWatch Logs 来监控 AWS AppSync API 调用。

CloudFormation 支持 – 您现在可以使用 AWS CloudFormation 模板定义 schema、数据源和解析程序。

AppSync 简介
在深入探讨新功能之前,我们来了解下从控制台开始创建 AWS AppSync API 的流程。我首先单击 Create API (创建 API):

为我的 API 输入名称,并 (出于演示目的) 选择使用示例 schema

此 schema 定义了一系列 GraphQL 对象类型。每个对象类型都有一组字段,并提供可选参数:

如果我在创建自己的 API,我就会在此刻输入我的 schema。但由于我使用的是示例 schema,所以不用这样做。无论采用哪种方式,我都需要单击创建以继续:

GraphQL schema 类型定义了数据操作的入口点。代表特定 schema 的所有已存储数据均必须可以使用开始于其中一个入口点的路径访问。控制台提供了适合我的 API 的终端节点和密钥:

它还为我提供了相关指南和一组功能完善的示例应用以供我克隆:

在我单击创建后,AWS AppSync 为我创建了两个 Amazon DynamoDB 表。我可以单击 Data Sources (数据源) 查看这些表:

我还可以查看和修改我的 schema、发出查询,并修改 API 的各种设置。

我们来快速了解一下各项新功能…

控制台日志访问
AWS AppSync 控制台已允许我发出查询和查看结果,现在还提供了相关日志条目的访问权限。要查看这些条目,我必须启用日志功能 (详见后文),打开日志,然后选中相应复选框。下面是一个简单的添加新事件的突变查询。我输入查询并单击箭头以进行测试:

我可以单击在 CloudWatch 中查看以查看更详细的视图:

要了解更多信息,请参阅测试和调试解析程序

使用模拟数据进行控制台测试
您现在可以在控制台中创建环境对象,并在控制台中将该环境对象传递到您的某个解析程序以进行测试。我将在我的 schema 中添加 testResolver 项目:

然后,我在 schema 页面右侧找到该项目,并单击连接

我选择一个数据源 (此数据源用于测试目的,实际应用中的数据源无法访问),并使用 Put item (放置项目) 映射模板:

然后,我单击 Select test context (选择测试环境),选择 Create New Context (创建新环境),命名我的测试内容,并单击保存 (如您所见,测试环境包含来自查询的参数,并且结果的每个字段都将返回相应的值):

保存新的解析程序后,我单击测试以查看请求和响应:

订阅解析程序
您的 AWS AppSync 应用程序可以监控对任何数据源的更改,只需使用 @aws_subscribe GraphQL schema 指令并定义订阅类型即可。AWS AppSync 客户端开发工具包使用 MQTT over Websockets 连接至 AWS AppSync,并且系统会在每一次突变后通知应用程序。您现在可以将解析程序 (可将 GraphQL 负载转换为底层存储系统所需的协议) 附加到订阅字段,并在客户端尝试建立连接时执行授权检查。这样,您可以针对各种查询、突变和订阅执行相同的具体授权例程。

如需了解有关此功能的更多信息,请参阅实时数据

GraphQL 批处理操作
您的解析程序现在可以在一个区域中使用涵盖一个或多个表的 DynamoDB 批处理操作功能。这样,您可以在一个查询中使用密钥列表、读取多个表的报告、将记录批量写入多个表中,以及在多个表中有条件地写入或删除相关报告。

要使用此功能,您用于访问表的 IAM 角色必须向 DynamoDB 的 BatchGetItemBatchPutItem 函数授予权限。

要了解更多信息,请参阅 DynamoDB 批量解析程序教程。

CloudWatch Logs 支持
您现在可以让 AWS AppSync 在 CloudWatch Logs 中记录 API 请求。单击设置Enable logs (启用日志),然后选择 IAM 角色和日志级别:

CloudFormation 支持
您可以在模板中使用以下 CloudFormation 资源类型来定义 AWS AppSync 资源:

AWS::AppSync::GraphQLApi – 从数据源(Amazon Elasticsearch Service 域或 DynamoDB 表) 角度定义 AppSync API。

AWS::AppSync::ApiKey – 定义访问数据源所需的访问密钥。

AWS::AppSync::GraphQLSchema – 定义 GraphQL schema。

AWS::AppSync::DataSource – 定义数据源。

AWS::AppSync::Resolver – 通过引用 schema 和数据源来定义解析程序,并添加请求的映射模板。

下面是一个简单的 YAML 形式的 schema 定义:

  AppSyncSchema:
    Type: "AWS::AppSync::GraphQLSchema"
    DependsOn:
      - AppSyncGraphQLApi
    Properties:
      ApiId: !GetAtt AppSyncGraphQLApi.ApiId
      Definition: |
        schema {
          query: Query
          mutation: Mutation
        }
        type Query {
          singlePost(id: ID!): Post
          allPosts: [Post]
        }
        type Mutation {
          putPost(id: ID!, title: String!): Post
        }
        type Post {
          id: ID!
          title: String!
        }

现已推出
这些新功能现已提供,您可以立即开始使用!下面是您可能感兴趣的几篇博文和其他资源:

Jeff