

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

# AWS AppSync でリゾルバーを設定する
<a name="resolver-config-overview"></a>

前のセクションでは、GraphQL スキーマとデータソースを作成し、それらを AWS AppSync サービス内でリンクする方法を学びました。スキーマでは、クエリとミューテーションに 1 つ以上のフィールド (オペレーション) を設定している場合があります。スキーマには、操作がデータソースに要求するデータの種類が記述されていましたが、それらの操作がデータに対してどのように動作するかは実装されていませんでした。

操作の動作は常にリゾルバーに実装され、リゾルバーは操作を実行するフィールドにリンクされます。リゾルバーの詳細な仕組みについては、[リゾルバー](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-components.html)ページを参照してください。

AWS AppSync では、リゾルバーはランタイム、つまりリゾルバーが実行される環境に関連付けられています。ランタイムは、リゾルバーを記述する言語を決定します。現在、APPSYNC\$1JS (JavaScript) と Apache Velocity (VTL) の 2 つのランタイムがサポートされています。

リゾルバーを実装する場合、リゾルバーは次のような一般的な構造になっています。
+ **before Step**: クライアントからリクエストが送信されると、使用中のスキーマフィールド (通常はクエリ、ミューテーション、サブスクリプション) のリゾルバーにリクエストデータが渡されます。リゾルバーは before step ハンドラーを使用してリクエストデータの処理を開始します。これにより、データがリゾルバーを通過する前に一部の前処理操作を実行できます。
+ **関数**: before ステップが実行されると、リクエストは関数リストに渡されます。リストの最初の関数がデータソースに対して実行されます。関数は、独自のリクエストハンドラーとレスポンスハンドラーを含むリゾルバーのコードのサブセットです。リクエストハンドラーはリクエストデータを取得し、データソースに対して操作を実行します。レスポンスハンドラーは、データソースのレスポンスを処理してからリストに戻します。関数が複数ある場合、リクエストデータはリスト内の次に実行される関数に送信されます。リスト内の関数は、開発者が定義した順序で連続して実行されます。すべての関数が実行されると、最終結果は後のステップに渡されます。
+ **after step**: after step は、GraphQL レスポンスに渡す前に、最終関数のレスポンスに対していくつかの最終操作を実行できるハンドラー関数です。

このフローはパイプラインリゾルバーの例です。パイプラインリゾルバーはどちらのランタイムでもサポートされています。ただし、これはパイプラインリゾルバーで何ができるかを簡単に説明したものです。また、ここでは考えられるリゾルバー構成を 1 つだけ説明しています。サポートされているリゾルバー構成の詳細については、APPSYNC\$1JS の「[JavaScript リゾルバーの概要](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-overview-js.html)」または VTL の「[リゾルバーマッピングテンプレートの概要](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-mapping-template-reference-overview.html)」を参照してください。

ご覧のとおり、リゾルバーはモジュール式です。リゾルバーのコンポーネントが正しく動作するためには、他のコンポーネントからの実行状態を覗き見できる必要があります。[リゾルバー](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-components.html)セクションを見れば、リゾルバーの各コンポーネントには、実行状態に関する重要な情報を一連の引数 (`args`、`context`など) として渡すことができることがわかります。AWS AppSync では、これは `context` が厳密に処理します。これは解決対象のフィールドに関する情報を格納するコンテナです。これには、渡される引数、結果、承認データ、ヘッダーデータなど、あらゆるものが含まれます。コンテキストの詳細については、APPSYNC\$1JS の「[リゾルバーコンテキストオブジェクトリファレンス](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-context-reference-js.html)」または VTL の「リゾルバーマッピングテンプレートコンテキストリファレンス」を参照してください。

リゾルバーの実装に使用できるツールはコンテキストだけではありません。AWS AppSync は値の生成、エラー処理、解析、変換などのための幅広いユーティリティをサポートします。APPSYNC\$1JS の場合は[こちら](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-util-reference-js.html)、VTL の場合は[こちら](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-util-reference.html)でユーティリティのリストを確認できます。

以下のセクションでは、GraphQL API でリゾルバーを設定する方法を学習します。

**Topics**
+ [基本的なクエリの作成 (JavaScript)](configuring-resolvers-js.md)
+ [基本クエリの作成 (VTL)](configuring-resolvers.md)