AppSync
AWS のマネージド GraphQL / Pub/Sub サービス
AppSync とは
AWS AppSync は、GraphQL API をフルマネージドで提供するサービスである。DynamoDB、Lambda、RDS、OpenSearch、HTTP エンドポイントをデータソースとして接続し、単一の GraphQL エンドポイントから統合的にデータを取得・更新できる。リアルタイムのサブスクリプション (WebSocket) もビルトインで提供する。
API Gateway + Lambda vs AppSync
API Gateway + Lambda と AppSync の違いを以下にまとめる。
| 観点 | API Gateway + Lambda | AppSync |
|---|---|---|
| API スタイル | REST | GraphQL |
| データ取得 | エンドポイントごとに固定 | クライアントが必要なフィールドを指定 |
| リアルタイム | WebSocket API を別途構築 | サブスクリプションがビルトイン |
| N+1 問題 | REST の over-fetching | GraphQL のリゾルバーで解決 |
| 認証 | IAM, Cognito, API キー | IAM, Cognito, API キー, OIDC |
| キャッシュ | 自前で実装 | ビルトインキャッシュ |
モバイルアプリやリアルタイム機能が必要な場合は AppSync、シンプルな REST API なら API Gateway + Lambda が適する。
リゾルバーの種類
リゾルバーの種類を以下にまとめる。
| リゾルバー | 説明 | 適用場面 |
|---|---|---|
| VTL リゾルバー | Apache Velocity テンプレートで記述 | DynamoDB への直接アクセス |
| JavaScript リゾルバー | JavaScript で記述 | 複雑なロジック |
| Lambda リゾルバー | Lambda 関数を呼び出し | 既存のビジネスロジック |
| パイプラインリゾルバー | 複数のリゾルバーを連鎖 | 認証→データ取得→変換 |
JavaScript リゾルバーは Lambda を経由せずに AppSync 内で実行されるため、レイテンシとコストの両面で有利。
リアルタイムサブスクリプション
リアルタイムサブスクリプションの例を示す。
subscription OnNewMessage {
onCreateMessage(channelId: "general") {
id
content
author
createdAt
}
}
クライアントがサブスクリプションを登録すると、AppSync が WebSocket 接続を維持し、Mutation が発生するたびにリアルタイムでデータをプッシュする。チャット、通知、ダッシュボードの自動更新に使える。
DynamoDB との統合
AppSync は DynamoDB と直接統合でき、Lambda を経由せずに CRUD 操作を実行できる。
[クライアント] → [AppSync] → [DynamoDB]
↓
VTL / JS リゾルバーで
DynamoDB API を直接呼び出し
Lambda のコールドスタートを回避でき、シンプルな CRUD ではレイテンシが大幅に改善する。
認証の多層化
AppSync は 1 つの API に複数の認証モードを設定できる。パブリックなクエリは API キー、ユーザー固有のデータは Cognito、管理操作は IAM、というように使い分ける。
関連書籍も参考になる。
この記事は役に立ちましたか?
関連用語
GraphQL
クライアントが必要なデータだけを指定して取得できる API クエリ言語
GraphQL Subscription
GraphQL でサーバーからクライアントへリアルタイムデータ更新を配信する仕組み
DynamoDB
AWS のフルマネージド NoSQL データベースで、ミリ秒単位のレイテンシとシームレスなスケーリングを提供する
Amazon Cognito
Web・モバイルアプリに認証・認可機能を追加する AWS マネージドサービス
SSE (Server-Sent Events) とは - サーバーからのリアルタイム配信の仕組み
SSE はサーバーからクライアントへ HTTP 上で一方向のリアルタイムストリームを送る仕組み。WebSocket との違い・EventSource API の使い方・再接続処理を解説
API Gateway
API のエントリーポイントとして認証、スロットリング、ルーティングを一元管理する AWS サービス
関連する記事
技術書のサンプルコードが動かないときの対処法
技術書のサンプルコードがエラーで動かない原因と、自力で解決するための具体的な手順を解説します。バージョン違い、環境差異、誤植への対応方法。
技術書がエンジニアのキャリアを変える - 読書習慣と年収の関係
技術書の読書習慣がエンジニアのキャリアアップに影響する 3 つの経路と、ジュニア・ミドル・シニア各段階に応じた読書戦略を具体的に解説します。
年収を上げた 1 冊 - エンジニア 50 人に聞いたキャリアを変えた本
エンジニアのキャリアに転機をもたらした本にはどんな共通点があるのか。50 人の回答から見えてきた、キャリアを変える本の 3 つの特徴を分析します。