AppSyncはGraphQLのマネージドサービスで、単一または複数のデータソースのデータに安全にアクセスしたり、操作したり、結合するための柔軟なAPIを作成でき、アプリケーション開発をシンプルにすることができます。多くの場合、異なったデータソースは異なったユースケースに合わせて最適化され、データが配信されるスピードも異なっていることでしょう。その基になるGraphQLスキーマで定義されているデータフィールドもかなり多様です。eコマースアプリケーションでは、在庫量を表すデータフィールドは頻繁に更新されますが、顧客プロフィールの更新は時々です。トランザクションIDに関しては不変で、更新されることはありません。すべてのデータ取得操作でデータソースに直接アクセスすると、システム全体の遅延が増大し、ユーザー体験とアプリケーションのパフォーマンスに影響があります。変更されないデータを返すキャッシュ層は、以前リクエストされたデータを後続のリクエストのためにキャッシュから直接配信できるため、パフォーマンスの向上、レイテンシーの短縮およびデータソースの使用率の最適化に役立ちます。AppSyncデータソースとして使用する際に、単一の論理的なビジネスオペレーションの一部として複数のアイテムを協調してINSERT、DELETE、またはUPDATEするといった複数の不可分な一連の処理のビジネスロジックを実装しなければならない場合もあるでしょう。DynamoDBトランザクションのビルトインサポートをリリースします。キャッシングAppSyncはサポートされるすべてのデータソースにビルトインサーバーサイドキャッシュ機能を提供するので、低レイテンシーで高スループットが必要なアプリケーションのパフォーマンスを向上し、デベロッパーは高速なインメモリのマネージドキャッシュからデータを取得して低レイテンシーにデータを届けることができるようになります。APIに次のようなさまざまなキャッシュ動作を定義できます。なし(None):サーバーサイドキャッシュはありません。APIのデフォルトの動作です。caching):データがキャッシュにない場合はデータソースから取得され、TTLの有効期限までキャッシュに投入されます。その後、APIへのすべてのリクエストはキャッシュから返されます。データソースに直接アクセスすることはありません。caching):リゾルバで定義された特定の操作またはフィールドからデータを取得するAPI呼び出しのみがキャッシュから応答を返します。適切なキャッシュ動作を定義した後、さまざまなメモリおよびネットワークパフォーマンスの要件に従ってキャッシュインスタンスタイプを選択し、キャッシュされたエントリがメモリに保存される時間(存続時間またはTTL)を定義できます。キャッシュはAppSyncによって完全に管理されます。他のサービスと同様に、インフラの保守や運用といったサービスそれ自体の差別化要因とならない重労働を気にする必要がありません。転送中および保存中のキャッシュを暗号化することもできます(スワップ操作中にメモリからディスクに保存されたデータの場合)。caching)を使用すると、どのようにGraphQL呼び出しをキャッシュして要件に合うようにするかをカスタマイズできます。したら、お使いのGraphQLスキーマには、ある特定のタイプやタイプのフィールド、あるいは特定のクエリ操作はキャッシュが必要だが、それら以外は(キャッシュなしで)データソースに直接到達しなければならないといった要件があるかもしれません。App)」サンプルプロジェクトを使用して作成されたGraphQLスキーマから次のタイプとクエリを見てみましょう。EventConnection}EventsとCommentsを保存する2つのDynamoDBテーブルがあります。アプリケーションがイベントの名前のみをキャッシュする必要があり、他の何もキャッシュする必要がない場合は、nameフィールドにリゾルバをアタッチするだけです。Resolver)」画面で、nameフィールドが保存されているデータソース(この場合はDynamoDBのAppSyncEventTableテーブル)を選択します。Resolver)をクリックして設定を保存します。これにより、Eventタイプのnameフィールド用に作成したリゾルバのキャッシュが有効になります。単一のフィールドの代わりにクエリ操作をキャッシュしたい場合、たとえばスキーマで定義されたgetEventクエリに関しても手順はまったく同じです。クエリリゾルバの設定でキャッシュを有効化し、カスタムTTLを定義するだけです。キャッシュキーを作成して、データのキャッシュされた値の一意性を確保することもできます。キャッシュキーは、コンテキストオブジェクト中のユーザー識別子(context.indentity)またはリゾルバに渡される引数(context.arguments)を基に定義することができます。context.argument.id(イベントの一意な識別子)をユーザが同一のイベントIDのキャッシュデータを取得するためのキャッシュキーとして使うことができます。このようにキャッシュキーをセットアップするには、次のような内容でcacheConfig.jsonという名前のファイルを作成します。CLIコマンドを使用して、任意のキャッシュキーでgetEventリゾルバを更新できます。cache)ボタンをクリックしてキャッシュを簡単にフラッシュして無効にできます。APIに十分な価値と改善をもたらしているかを簡単に理解できることも非常に重要です。APIのすべてのキャッシュアクティビティを、コンソールのAPIのモニタリングセクションの単一のダッシュボードから便利にいつでも監視できます。AppSyncでキャッシュを使用するには追加料金がかかります。APIから削除されるまで、長期契約義務などは一切なく時間ごとに課金されます。詳しい情報は料金ページをご覧ください。DynamoDBデータソースとリゾルバのトランザクションもサポートするようになりました。DynamoDBトランザクションによって、テーブル内およびテーブルをまたがって複数のアイテムを不可分な一連の処理として協調的に変更処理するデベロッパー体験がシンプルになります。(ACID)を提供し、アプリケーションのデータの正確性を維持するのに役立ちます。AppSyncは、リゾルバでトランザクションをハンドリングするのに使われる次の2つのDynamoDB操作をサポートするようになりました。TransactWriteItems:1つ以上のPutItem、UpdateItem、およびDeleteItem操作からなる書き込みセットを含んだバッチ処理。TransactGetItems:1つ以上のGetItem操作からなる読み取りセットを含んだバッチ処理。ミューテーションリゾルバで次のようなVTLテンプレートを使用して、異なるテーブル間でアイテムを作成または更新するトランザクションを発行するGraphQLミューテーションを使用できるようになりました。}各トランザクションには最大25個の一意なアイテムを含めることができます。トランザクションが成功した場合は、取得されたアイテムの順序はリクエストアイテムの順序と同じになります。トランザクションはすべて成功するかさもなくば失敗という風に実行されることに注意することも重要です。リクエストされた要求されたアイテムのいずれかがエラーになる場合、トランザクション全体は実行されず、エラーの詳細が返されます。AppSyncを使用したDynamoDBトランザクションのより詳しい情報と便利なチュートリアルはデベロッパーガイドからご覧いただけます。APIにより柔軟性を与えます。(ACID)が利用できます。AppSyncのキャッシングやDynamoDB統合で他に見たいものはありますか?わたしたちのGitHubリポジトリでお気軽にフィーチャーリクエストを作成してください。わたしたちのチームは常にリポジトリを監視しており、AppSyncでお作りいただいたアプリケーションがうまくいくようにデベロッパーのフィードバックをお聞きするのをいつも楽しみにしています。機会均等法を順守しています。平等に採用しています。