#はじめに
以前、Node.js+MongoDB構成で簡単なGraphQLサーバをつくりました。Schema, Query, Mutationの作成に意外と時間がかかったので、もっと簡単に構築できる方法がないか調べたところ、AWSにAppSyncというサービスがあることを知りました。AppSyncを使うと、Schemaを作成するだけでQueryとMutationの作成やDB接続を簡単にできるということだったので、学習のために触ってみることにしました。
#AWS AppSyncとは
AppSyncはGraphQLのマネージド・サービスです。
以下の特徴があり、このサービスを使うと拡張性高くセキュアなリアルタイムアプリケーションを簡単に作ることができます。
- Schemaを定義するだけでQueryとMutationとSubscriptionを自動作成
- DBとの自動接続
- 複数のDBの切り替え
- データへのセキュアなアクセス
- オフラインアクセス
*Subscriptionというのは、リアルタイムでデータを取得するために使われるものです。これを使うと、例えばクライアントAがデータ登録を行ったときに、クライアントBの表示がデータ登録後の値にリアルタイムで切り替わります。
Black Beltの資料にもっと詳しい内容が載っています。
#API作成手順
AWSマネジメントコンソールでAWS AppSyncを検索し、APIを作成
を選択すると以下の画面になります。
APIを作成する方法が6つあるのですが、今回は1からAPI構築する手順を学ぶのが目的なので、ウィザードで作成
を選択します。
モデルを作成する画面になります。モデルはGraphQLのSchemaにあたるもので、ここで名前やフィールドの設定を行います。モデルテーブルは対応するDBのテーブルにあたります。
以下の画面になります。スキーマの画面にMutationとQueryが作成されていることを確認できます。
また、データソースをみるとDynamoDBにテーブルが自動で作成されていることも確認できます。
試しにクエリからMutation(CreatePracticeAppType)を実行すると、ちゃんとDBにデータが登録されています。
**AWSコンソールにログインしてからここまでなんと3分しか経っていません。**すげー。
#resolverのカスタマイズ
Muttionを実行できたのでresolverも自動で設定されているわけですが、こちらのカスタマイズも自由に行うことができます。GraphQLリクエストをデータソースの命令に変換する側(リクエストマッピングテンプレート)と、データソースからの応答をGraphQLレスポンスの応答に変換する側(レスポンスマッピングテンプレート)の2つをVTLという言語で好きにカスタマイズすることができます。
#クライアント(アプリ)との接続
amplifyというサーバレスなバックエンドを簡単に構築するためのJavaScriptライブラリを使うことで、AppSyncで作成したGraphQL APIを自分のアプリと接続することができるようになります。
#おわりに
今度はAWS Amplifyを使って、APIを含めたバックエンドの構築をやってみたいと思います。