Amplify的基础知识和使用方法备忘录
基本知识
-
- Amplifyとは「AWSの様々なサービスをより簡単に扱えるツール」のこと
-
- Firebaseに似てる
-
- AmplifyはWebブラウザ用のコンソールと呼ばれる画面上でも一部操作可能だが、基本的にはCLIで操作する
-
- CLIの各種コマンドを実行すると裏でCloudFormationが動く仕組みになっている
【重要】 CLIコマンド実行中に途中で強制停止するとトラブルの元になり、最悪の場合元に戻せないので注意
Amplifyにはプロジェクトという概念があり、基本的には一つのプロダクトにつき一つのプロジェクトを作成
プロジェクトを作成すると、リポジトリ内にamplifyという名前のフォルダが生成される
命令行安装
-
- ローカルで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関連の各種設定やLambda関数のソースコードファイル、GraphQLスキーマファイル等が配置される
-
- amplifyフォルダにはGit管理下のファイルと、そうでないファイルがある
/amplify/.config には基本的な設定ファイルが配置される
/amplify/backend にはカテゴリ毎にフォルダが配置され、それぞれに関連ファイルが配置される
/amplify/team-provider-info.json は環境設定を記述するJSONファイル(詳しくは後述)
环境
-
- 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 {環境名} コマンドを実行できない
增强代码生成
-
- GraphQLスキーマを /amplify/backend/api/{API_NAME}/schema.graphql に書く
amplify codegen というコマンドを実行すると、GraphQLスキーマファイルに基づいたJSファイルが生成される
生成先は /src フォルダ(設定で変更可)
生成されたJSファイルをアプリケーション側でimportすることでGraphQL APIを扱うことができる
基本的にcodegen後のファイルはGit管理下にするべきではない(GraphQLスキーマファイルとの不一致を防ぐため)
生成された以外のGraphQLを書きたい場合は、別途ファイルを作成してimportする