チュートリアル: でのローカルリゾルバーの使用 AWS AppSync - AWS AppSync

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

チュートリアル: でのローカルリゾルバーの使用 AWS AppSync

注記

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

AWS AppSync では、サポートされているデータソース (AWS Lambda、Amazon DynamoDBを使用して、さまざまなオペレーションを実行できます。 OpenSearch ただし、特定のシナリオでは、サポートされているデータソースに対する呼び出しの必要がないことがあります。

そのような場合は、ローカルリゾルバーが役立ちます。リモートのデータソースを呼び出すのではなく、ローカルリゾルバーはリクエストマッピングテンプレートの結果をレスポンスマッピングテンプレートに転送します。 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。