チュートリアル: ローカルリゾルバー - AWS AppSync

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

チュートリアル: ローカルリゾルバー

注記

現在、主に APPSYNC_JS ランタイムとそのドキュメントをサポートしています。こちらで APPSYNC_JS ランタイムとそのガイドの使用をご検討ください。

AWS AppSync では、サポートされているデータソース (Amazon DynamoDB または Amazon OpenSearch 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 フィールドにリゾルバーをアタッチしましょう。[スキーマ] ペインで、右側のパネルのフィールド定義の横にある [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 } }

Nadia は、Mutation.page ミューテーションが呼び出されるたびにページを受け取ります。ミューテーションを実行することで、このミューテーションを呼び出しましょう。

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

AWS AppSync に任せずにページを送信してそれを受信することで、ローカルリゾルバーの使用方法の例を示しました。