AWS AppSync
# AWS AppSync
https://d1.awsstatic.com/webinars/jp/pdf/services/20190821_AWS-BlackBelt_AppSync.pdf
## AWS AppSync とは
- AWS AppSync はGraphQLのマネージドサービス
- 代表的なWebAPI Model
- REST-API
- GraphQL
- GraphQL の特徴
- AppSync の特徴
- リアルタイム機能とオフライン機能を簡単に実装できる
- GraphQL マネージドサービス
- アカウントDataSourceに接続
- データ同期、リアルタイム、オフライン機能
- GraphQLファサード
- 競合の検出と解決
- セキュリティ
- コンセプト
- AWS App Sync Client: 認証、オフラインロジックなどを含んだClient
- Data Source: DynamoDB / Elasticsearch / Lambda
- Identity: GraphQL Proxy へのリクエストの認証
- GraphQL Proxy: リクエストのマッピング、コンフリクトのハンドリング、アクセスコントロール
- Operator: Query/ Mutation / Subscription など GraphQL のオペレーション
- Action; GraphQL から Subscriber への通知
- Resolver: リクエスト/ レスポンスの処理を記述する関数
- ユースケース
- リアルタイム
- ほぼリアルタイムでデータを更新
- コラボレーション
- 複数ユーザーが共同編集を行うアプリケーション
- 様々なコンテンツタイプを自動更新
- ソーシャルメディア
- 多様なデータソース
- DynamoDB
- Lambda
- Aurora Serverless
- Elasticsearch
- HTTP Endpoint
- 作り方
- Schema 定義(SDL)
- Rootスキーマを記述
- Resolver マッピングテンプレートの記述
- アクセスコントロール
- 新規アイテムのデフォルト例
- 入力のバリデーション・フォーマット
- データの変換と整形
- リスト、マップの加工
- ユーザーIDに基づいたレスポンスのフィルタリング/変更
- 複雑な権限チェック
- Resolver でパイプラインを組んで何個かを束ねて実行可能(Pipeline Resolver)
- キャッシュを二層に分割した差分同期(Delta Sync)
- マッピングテンプレート
- Request テンプレート
- Response テンプレート
- 生成方法はいろいろある。
- 直接記述
- No-code GraphQL API Builder を利用
- Schemaからジェネレート
- DynamoDBからジェネレート
- クライアントからGraphQL Endpoint への接続設定
## 雑感
AppSync はGraphQL のマネージドサービス。データを取得するために複雑にエンドポイントをコールしていたつらくなったREST-API 開発をしているときなどにはまりそう。
または、リアルタイム性の求められる、チャットやソーシャルメディアでも使いやすそう。認証も複数のプロバイダが利用できるようなので考える余地があると思う。
リアルタイムにデータを受け渡しして、柔軟性が求められるケースで使うのが良さそう。