# 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
2
3
4
5
6
7
8
9
10
11
query{
getUser(id: "123"){
name
posts{
title
comments{
content
}
}
}
}

由 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
2
3
4
5
6
7
subscription OnNewMessage{
onNewMessage{
id
content
sender
}
}

只要後端發生 Mutation AppSync 會自動推播給所有訂閱的客戶端

不需要自己維護 Websocket


# Reference

  • AWS - AppSync
更新於