amplify codegenの参照先スキーマにAppSyncのGraphQLのIDを指定する方法🚀

amplify codegenの参照先スキーマにAppSyncのGraphQLのIDを指定する方法🚀

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは!

最近は GraphQL 開発が増え、AWS Amplify が注目されるようになってきました。変更がしやすくデータアクセス志向なAPI 設計を提供してくれる GraphQL は、まさに現代のリーンスタートアップ的なプロジェクトにはぴったりな技術ですよね。

Amplify を GraphQL のクライアントとして利用する場合に、各種 GraphQL コード(Query, Mutation, Subscription)をどのように管理するのか悩みどころだと思います。

本記事では、 Amplify codegenをデプロイ済みの AppSync のスキーマと連携させる方法を紹介します!

想定する読者

  • Amplify と CloudFormation 構築した AppSync の連携方法に悩んでいるヒト
  • プロジェクトへ Amplify の採用を検討しているヒト

はじめに

AppSync 構築には Amplify CLI を使った方が良いのか?

まず、GraphQL のエンドポイント(AppSync)の構築方法は2パターンあります。

  • Amplify CLI で schema.graphql ファイルから自動的にAppSyncを構築
  • Cloud Formation 自動構築または管理コンソール上で AppSync を手動構築

わたし達が AppSync を構築する際は、基本的に Amplify CLI 利用せず、Cloud Formation を個別で作成し対応しています。

これは、Amplify CLI にはまだまだ不具合が多く、過去に Amplify で構築したシステムの運用で苦しんだ経験があるためです。(GSI を後から追加できない、ElasticSearch を後から追加できないなど)

Cloud Formation で構築した AppSync と Amplify codegen を連携させる方法

amplify add codegen --apiId {appsync_graphql_id}
amplify codegen

上記のコマンドを実行すると、ローカル環境へ Query, Mutation, Subscription が生成されます。

自動連携させない方法もあります

本記事のテーマからは外れますが、プロジェクトのルートディレクトリに schema.graphql ファイルを設置することで、amplify codegen がスキーマファイルの内容を基準に各種 GraphQL ファイルをビルドしてくれます。

AppSync コンソールから都度スキーマファイルをダウンロードしローカルに落とせば、手動でのスキーマファイルの管理も可能です。

まとめ

Amplify には不具合がまだまだ多く、実運用には慎重にならなければいけませんが、わたし達は Amplify フレームワークの思想が好きです。

インフラのコードを一切書かない、可能な限りインフラを意識させない、これはプロジェクト全体の開発コストを大幅に下げることができると思います。Amplify の将来にが楽しみですね。

サーバーレスでの運用・開発相談は、お気軽にお問い合わせください。