基礎知識
- Amplifyとは「AWSの様々なサービスをより簡単に扱えるツール」のこと
- Firebaseに似てる
- AmplifyはWebブラウザ用のコンソールと呼ばれる画面上でも一部操作可能だが、基本的にはCLIで操作する
- CLIの各種コマンドを実行すると裏でCloudFormationが動く仕組みになっている
-
【重要】
CLIコマンド実行中に途中で強制停止するとトラブルの元になり、最悪の場合元に戻せないので注意 - Amplifyにはプロジェクトという概念があり、基本的には一つのプロダクトにつき一つのプロジェクトを作成
- プロジェクトを作成すると、リポジトリ内にamplifyという名前のフォルダが生成される
CLIインストール
- ローカルでAWSの認証情報を設定する
- 任意のprofile名を付ける
- 下記コマンドでCLIインストール
npm install -g @aws-amplify/cli
Category (カテゴリ)
- Amplifyには「category (カテゴリ)」という概念がある
- api、auth、functionなど様々なカテゴリが用意されている
- 例えばapiカテゴリはGraphQL APIやREST APIを作るときに使う
- GraphQL APIは裏でAppSyncが動き、REST APIではAPI GatewayやLambda等が動く
- 他にも、authはCognito、functionはLambda、hostingはRoute53やS3、storageはS3が動く
- CLIで
amplify api add
を実行すれば apiを追加でき、amplify api remove
で削除できる - functionなら
amplify function add
、authならamplify auth add
といったように実行する
amplifyフォルダ
- amplifyフォルダ内には、amplify関連の各種設定やLambda関数のソースコードファイル、GraphQLスキーマファイル等が配置される
- amplifyフォルダにはGit管理下のファイルと、そうでないファイルがある
-
/amplify/.config
には基本的な設定ファイルが配置される -
/amplify/backend
にはカテゴリ毎にフォルダが配置され、それぞれに関連ファイルが配置される -
/amplify/team-provider-info.json
は環境設定を記述するJSONファイル(詳しくは後述)
env (環境)
- Amplifyには「env (環境)」という概念がある
- これは例えば本番環境、ステージング環境、開発環境といったように環境を分けたい場合に役立つ
- 環境ごとに全く別々のAWSリソースが構築される
- 例えばLambda関数(function)を作り、2つの環境(stgとdev)を作ると、AWSコンソールを見ると同じソースコードのLambda関数が2つ生成されていることが確認できる
- 同様に、DyanmoDBのテーブルやS3のバケット等も全て環境ごとに生成される
- 現在存在する環境一覧をリスト表示するには
amplify env list
を実行 - 現在選択中の環境には名前の横にマークが付く
- 環境を切り替えるには
amplify env checkout stg
のように最後に環境名を指定して実行 - 新たに環境を追加するにはCLIで
amplify env add
を実行 - 環境の削除は
amplify env remove
で簡単に実行できるが、再度作り直してもIDが変わってしまい、全く同じ環境ではなくなるので注意 - 環境関連コマンドを実行すると
/amplify/team-provider-info.json
の内容が書き換わる - 前述のJSONファイルに環境が存在しなければ、
amplify env checkout {環境名}
コマンドを実行できない
amplify codegen
- GraphQLスキーマを
/amplify/backend/api/{API_NAME}/schema.graphql
に書く -
amplify codegen
というコマンドを実行すると、GraphQLスキーマファイルに基づいたJSファイルが生成される - 生成先は
/src
フォルダ(設定で変更可) - 生成されたJSファイルをアプリケーション側でimportすることでGraphQL APIを扱うことができる
- 基本的にcodegen後のファイルはGit管理下にするべきではない(GraphQLスキーマファイルとの不一致を防ぐため)
- 生成された以外のGraphQLを書きたい場合は、別途ファイルを作成してimportする