教程:本地解析程序 - AWS AppSync
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

教程:本地解析程序

AWS AppSync 允许您使用支持的数据源(AWS Lambda、Amazon DynamoDB 或 Amazon Elasticsearch Service)执行各种操作。但在某些情况下,可能不必调用支持的数据源。

这时本地解析程序就很方便。本地解析程序无需调用远程数据源,只需将请求映射模板的结果转发到响应映射模板。不会离开 AWS AppSync 进行字段解析。

在许多使用案例中本地解析程序都很有用。最常用的使用案例是在不触发数据源调用的情况下发布通知。要演示此使用案例,让我们构建一个传呼应用程序,用户可互相呼叫。此示例利用了订阅,如果您不熟悉订阅,可以参考实时数据教程。

创建呼叫应用程序

在我们的呼叫应用程序中,客户端可以订阅收件箱,并向其他客户端发送呼叫。每个呼叫包含一条消息。以下是架构:

schema { query: Query mutation: Mutation subscription: Subscription } type Subscription { inbox(to: String!): Page @aws_subscribe(mutations: ["page"]) } type Mutation { page(body: String!, to: String!): Page! } type Page { from: String! to: String! body: String! sentAt: String! } type Query { me: String }

让我们在 Mutation.page 字段上附加一个解析程序。在 Schema (架构) 窗格中,单击右侧面板中字段定义旁的 Attach Resolver (附加解析程序)。创建类型为 None 的新数据源,并命名为 PageDataSource

在请求映射模板中输入:

{ "version": "2017-02-28", "payload": { "body": $util.toJson($context.arguments.body), "from": $util.toJson($context.identity.username), "to": $util.toJson($context.arguments.to), "sentAt": "$util.time.nowISO8601()" } }

对于响应映射模板,选择默认的 Forward the result (转发结果)。保存解析程序。您的应用程序现在已经就绪,让我们开始呼叫吧!

发送呼叫和订阅呼叫

接收呼叫的客户端必须首先订阅收件箱。

让我们在 Queries (查询) 窗格中执行 inbox 订阅:

subscription Inbox { inbox(to: "Nadia") { body to from sentAt } }

只要 Mutation.page 更改被调用,Nadia 就会收到呼叫。执行更改可进行调用:

mutation Page { page(to: "Nadia", body: "Hello, World!") { body to from sentAt } }

我们刚刚演示了如何使用本地解析程序,无需离开 AWS AppSync 即可发送并接收呼叫。