AWS AppSync

GraphQL API をフルマネージドで構築・運用でき、DynamoDB や Lambda など複数のデータソースを統合的にクエリできるサービス

概要

AWS AppSync は、GraphQL API をフルマネージドで提供するサービスです。フロントエンドから単一のエンドポイントで複数のデータソース (DynamoDB、Aurora、OpenSearch、Lambda、HTTP エンドポイント) にアクセスでき、必要なデータだけを 1 回のリクエストで取得できます。リアルタイムデータ同期 (WebSocket ベースのサブスクリプション)、オフラインデータ同期、組み込みのキャッシュ機能を備えており、モバイルアプリやリアルタイムダッシュボードの構築に適しています。Cognito、IAM、API キー、Lambda オーソライザーによる柔軟な認証・認可も標準で利用できます。

リゾルバーとデータソースの設計

AppSync の中核はリゾルバーで、GraphQL のフィールドとデータソースを接続する役割を担います。VTL (Velocity Template Language) リゾルバーはリクエスト・レスポンスのマッピングテンプレートを記述する従来型で、DynamoDB への直接アクセスなどシンプルな操作に向いています。JavaScript リゾルバーは VTL より後に追加された方式で、APPSYNC_JS ランタイム上で動作し、VTL より直感的にロジックを記述できます。パイプラインリゾルバーは複数のデータソースを順番に呼び出す構成で、認可チェック → データ取得 → 変換のような多段処理を 1 つの GraphQL フィールドで実現できます。実務では JavaScript リゾルバーを基本とし、複雑なビジネスロジックが必要な場合のみ Lambda データソースに委譲する設計が選択肢になります。

サブスクリプションとオフライン同期

AppSync のリアルタイム機能は WebSocket ベースのサブスクリプションで実現されます。クライアントが特定のミューテーションを購読すると、データ変更が即座に全接続クライアントに配信されます。チャットアプリ、コラボレーションツール、ライブダッシュボードなど、複数ユーザーが同じデータをリアルタイムに共有する場面で威力を発揮します。Azure でも API Management で GraphQL API を公開できますが、AppSync はサブスクリプションをマネージドの標準機能として備えており、別途リアルタイム通信基盤を組み合わせずに利用できます。オフライン同期は Amplify DataStore と組み合わせて実現し、ネットワーク切断中のデータ変更をローカルに蓄積し、再接続時にサーバーと自動的に同期します。コンフリクト解決戦略として、Automerge (自動マージ)、Optimistic Concurrency (楽観的排他制御)、Lambda (カスタムロジック) の 3 方式を選択できます。

認証モデルとマルチデータソース統合

AppSync は 1 つの API に対して複数の認証モードを同時に設定できます。Cognito ユーザープール (ユーザー認証)、IAM (サービス間通信)、API キー (パブリックアクセス)、Lambda オーソライザー (カスタム認証) を組み合わせ、GraphQL スキーマのフィールドレベルで認証モードを指定できます。たとえば、記事の閲覧は API キーで誰でもアクセス可能にし、記事の作成・編集は Cognito 認証を要求する設計が可能です。データソース統合では、1 つの GraphQL クエリで DynamoDB からユーザー情報を取得し、同時に OpenSearch からの検索結果と Lambda で計算した推薦スコアを組み合わせて返すといった、複数バックエンドの統合が AppSync の真価です。注意点として、リクエストの実行時間には上限 (30 秒・2026 年 9 月時点) があり、重い集計処理やバッチ操作には向きません。そのような処理は Lambda データソースに委譲し、非同期で結果を返す設計にする必要があります。

参考資料 (AWS 公式)

本ページの一次情報は AWS 公式サイトおよび公式ドキュメントです。最新の仕様 / 料金は次の公式ページで確認できます。

本ページと公式ドキュメントの記述が食い違う場合は、公式ドキュメントを正としてください。

共有するXB!