# AWS - AppSync
# 前言
AWS AppSync 是近年 AWS 上最重要的『GraphQL API 平台服務』常被用來取代傳統 REST API Gateway + Lambda 架構
尤其是當前端需要 一次拿多資料源 時非常強大
# 核心概念
- GraphQL Schema 定義可查詢的資料結構 Types/Queries/Mutations/Subscriptions
- Data Sources 後端資料來源 DynamoDB/Lambda/RDS/HTTP API/Elasticsearch
- Resolver 負責將 GraphQL 請求轉成資料來源的實際操作
- Pipeline Resolver 允許多步驟處理 (例如驗證 -> 資料轉換 -> 寫入)
- Subscriptions 讓前端能訂閱即時更新 (基於 Websocket)
- Authorization Mode 支援多種驗證方式 (API Key/Cognito/IAM/OIDC/ 自訂 Lambda Auth)
# 解決的問題
傳統 API 的問題
- 需要多個 Endpoint (/users/orders)
- 每次都要多次請求 (over-fetch/under-fetch)
- 即時更新困難
AppSync 的 GraphQL 方式
1 | query{ |
由 AppSync 幫你 整合 + 聚合 所有資料來源再回傳
# AppSync 支援的資料來源 (Data Sources)
- DynamoDB
- AWS Lambda
- RDS(Aurora Serverless)
- Elasticsearch/OpenSearch
- HTTP API
- None 用於 Resolver Pipeline 測試或是中介處理
# 運作流程
Client (GraphQL Query) > AppSync Endpoint > Schema 解析 > Resolver 轉換 > 連到 Data Source > 回傳結果
# 即時資料功能 (Subscriptions)
AppSync 內建 Websocket-based Subscriptions 讓前端可以訂閱事件更新如
1 | subscription OnNewMessage{ |
只要後端發生 Mutation AppSync 會自動推播給所有訂閱的客戶端
不需要自己維護 Websocket
# Reference
- AWS - AppSync