翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS AppSync でのローカルリゾルバーの使用
AWS AppSync では、サポートされているデータソース (、Amazon DynamoDB、または Amazon OpenSearch Service) を使用してさまざまなオペレーションを実行できます。ただし、特定のシナリオでは、サポートされているデータソースに対する呼び出しの必要がないことがあります。
そのような場合は、ローカルリゾルバーが役立ちます。リモートのデータソースを呼び出すのではなく、ローカルリゾルバーはリクエストハンドラーの結果をレスポンスハンドラーに転送します。AWS AppSync ではフィールドの解決は行われません。
ローカルリゾルバーは、さまざまな状況で役立ちます。特によく使用されるのは、データソースの呼び出しをトリガーせずに通知を発行する場合です。このユースケースを実証するために、ユーザーがメッセージをパブリッシュしたりサブスクライブしたりできる pub/sub アプリケーションを作成してみましょう。この例では、サブスクリプションを活用します。サブスクリプションに慣れていない場合は、「リアルタイムデータ」チュートリアルを参照してください。
Pub/Sub アプリの作成
まず、[最初から設計] オプションを選択し、GraphQL API の作成時にオプションの詳細を設定して、空白の GraphQL API を作成します。
Pub/sub アプリケーションでは、クライアントはメッセージをサブスクライブしたりパブリッシュしたりできます。パブリッシュされた各メッセージには名前とデータが含まれます。これをスキーマに追加してください。
type Channel { name: String! data: AWSJSON! } type Mutation { publish(name: String!, data: AWSJSON!): Channel } type Query { getChannel: Channel } type Subscription { subscribe(name: String!): Channel @aws_subscribe(mutations: ["publish"]) }
次に、リゾルバーを Mutation.publish
フィールドにアタッチしましょう。「スキーマ」ペインの横にある「リゾルバー」ペインで、Mutation
タイプを探し、publish(...): Channel
フィールドを探して、「アタッチ」をクリックします。
None データソースを作成して、PageDataSource という名前を付けます。リゾルバーにアタッチします。
次のスニペットを使用してリゾルバーの実装を追加します:
export function request(ctx) { return { payload: ctx.args }; } export function response(ctx) { return ctx.result; }
必ずリゾルバーを作成し、変更を保存してください。
ページの送信およびサブスクライブ
クライアントがメッセージを受信するためには、まずは受信箱をサブスクライブする必要があります。
[クエリ] ペインで SubscribeToData
のサブスクリプションを実行します。
subscription SubscribeToData { subscribe(name:"channel") { name data } }
サブスクライバーは、publish
ミューテーションが呼び出されるたびにメッセージを受信しますが、メッセージが channel
サブスクリプションに送信されたときだけです。クエリペインでこれを試してみましょう。サブスクリプションがまだコンソールで実行されている間に、別のコンソールを開き、クエリペインで次のリクエストを実行します。
注記
この例では、有効な JSON 文字列を使用しています。
mutation PublishData { publish(data: "{\"msg\": \"hello world!\"}", name: "channel") { data name } }
結果は以下のようになります。
{ "data": { "publish": { "data": "{\"msg\":\"hello world!\"}", "name": "channel" } } }
AWS AppSync に任せずにメッセージをパブリッシュしてそれを受信することで、ローカルリゾルバーの使用方法の例を示しました。