LoginSignup
0
0

More than 3 years have passed since last update.

AWS AppSyncについてまとめてみた

Posted at

AWS AppSyncとは

  • マネージド型のGraphQLサービス
  • リアルタイム機能、オフライン機能が簡単に実装可能
  • NoSQLデータストア、RDB、HTTP API、AWS Lambdaを使用したアプリケーションの構築

特徴

  • GraphQLを使用して情報を取得できる。
  • Amazon Cognitoと連携することで認可制御が容易に実現できる。
  • パイプラインリゾルバーを利用することで、複数のオペレーションを組み合わせて実行できる。
  • マッピングテンプレートに処理を記載することで、リソースへアクセスする前後に処理を挟むことができる。

リゾルバー

AWS AppSyncは、クライアントからGraphQLリクエストを受け取ると、リゾルバーと呼ばれる関数にGraphQLリクエストをマッピングする。

ここでいう関数とは、

  • リクエストマッピングテンプレート
  • レスポンスマッピングテンプレート
  • データソース名
  • バージョン

で構成されており、 データソースへの1つのオペレーションを定義している。

開発者はそれぞれリクエスト・レスポンスに対する処理をVTL(Apache Velocity Template Language)と呼ばれるフォーマットでマッピングテンプレートに自由に記述できる。

リクエストマッピングテンプレート
文字数チェックなど、リクエストデータのスキーマ定義より細かいバリデーションを行うことができる。
DBへ新規登録する際に、フロントエンドからきたリクエストデータに固定値(バージョン)を加えることができる。

レスポンスマッピングテンプレート
ユーザに応じて返却する情報を絞ることができる。
複数リソースから得た結果を1つのオブジェクトに整形することができる。

image.png

ユースケース

リアルタイム
・最新情報をウォッチするダッシュボード
・ほぼリアルタイムでデータを更新

コラボレーション
・複数ユーザーが共同編集を行うアプリケーション
・ドキュメント、画像、テキストメッセージなど、さまざまなコンテンツタイプを自動更新

ソーシャルメディア
・ソーシャルメディアやチャット
・複数ユーザー間でのメッセージング管理をサポート
・オフライン時でもアプリケーションを操作でき、再接続時に自動Sync

GraphQLとは

  • Facebookが開発
  • アプリケーションがサーバーからデータを取得できるように開発されたデータ言語
  • Query(取得)、 Mutation(変更)、Subscription(購読)
  • GraphQL クエリでは、クライアントがレスポンスの形式を指定する。 これにより、クライアントは必要なデータのみを必要な形式で照会することが可能。

GraphQLの実際の動き

Query

image.png

サーバー側で定義されたスキーマに沿って、クライアント側で指定したデータのみを取得することができる。
※REST APIでは、返却値が決まっているため不必要なデータも取得される場合がある。

Mutation

image.png

Subscription

image.png

GraphQLとREST

image.png

GraphQLとREST APIのどちらを採用するかで開発フローに違いが出てくる。

GraphQLの開発フロー
1. 画面仕様(デザイン)を作成
2. 画面仕様からデータソース(DynamoDB)を作成
3. データアクセスの GraphQL 及びマッピングテンプレートを作成
4. テスト

RestAPIの開発フロー
1. 機能仕様書からデータベース設計
2. データベースへアクセスするための API設計
3. APIのプログラミング
4. テスト

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0