翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
チュートリアル: ローカルリゾルバー
注記
現在、主に 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 に任せずにページを送信してそれを受信することで、ローカルリゾルバーの使用方法の例を示しました。