Amplify編集・管理してよいファイル/ダメなファイル

Amplify導入時に環境構築のために下記コマンドを実行するとローカルにディレクトリが自動で作成されるかと思います。

amplify init

そんな中で開発者は「その中からどのファイルを触っていいんだっけ?」、「どれをGit等でバージョン管理していいんだっけ?」というのをまとめた記事になります。(amplify init時だけでなく、後々amplifyの操作によって生成されるファイルも記事に含めています)

参考したのは公式docの以下になります。

実際にまとめた

ディレクトリ粒度の一覧でとりあえず以下にまとめてみました。続けてどんな内容のファイルが各ディレクトリに存在するかを見ていきます。

amplify
 |- .config                   編集:NG/ バージョン管理:OK
 |- #current-cloud-backend    編集:NG/ バージョン管理:NG
 |- backend                   編集:OK/ バージョン管理:OK
 └ hooks                      編集:OK/ バージョン管理:OK

.config

クラウドのコンフィギュレーションと設定/プリファレンスを保存するファイルが含まれています。 プロジェクトのコンフィギュレーションを変更するには、amplify configureを実行する。

#current-cloud-backend

チェックアウトされた環境のリソースの現在のクラウド状態が格納されている。 このフォルダの内容は手動更新してはいけない。 amplify push、amplify pull、amplify env checkoutのような操作で上書きされる。

backend

チェックアウトされた環境のリソースの最新のローカル開発状態が記載される。 このフォルダの内容は変更可能で、amplify pushを実行するとこのディレクトリの変更をリモートにプッシュできる。 各プラグインは、このフォルダの中のそれぞれのサブフォルダにコンテンツを保存する。

hooks

ドキュメントに記載はありませんが、コマンドフックを使用して、Amplify CLI コマンドの前、最中、後にカスタムスクリプトを実行するためのディレクトリのようでした。

セキュリティガイドラインや運用要件を満たすために利用できそうですが、当然クレデンシャルな情報のバージョン管理は御法度です。

主要なファイルとその特徴

backend-config.json

編集:🆗
バージョン管理:🆗

amplifyにおける主要ファイルの一つでamplify/backendとamplify/#current-cloud-backendの両ディレクトリに存在します。
プロジェクトのバックエンドに関する設定を含み、AWSリソースへの接続方法が記述されている。

このファイルはAmplify CLIコマンド(例: amplify add authamplify add api)によって更新される。

手動拡張も可能で、Amplify CLIの機能を超えてバックエンドを設定する際にも利用することができる。

ただし、このファイルを編集すると悪影響を及ぼす影響があると、公式docにはWariningで記載が…

amplify-meta.json

編集:🆖
バージョン管理:🆖

amplify/backendとamplify/#current-cloud-backendディレクトリの両方にファイルが存在。バックエンドディレクトリ内のamplify-meta.jsonは、CLIコアとプラグインが内部情報を記録し、互いに通信するために機能する。

CLIコアはプラグイン用のファイルの読み書きアクセスを提供する。init後に選択されたプロバイダの出力を収集し、「providers」オブジェクトの下にログを残す。たとえば、awscloudformationプロバイダはルートスタック、デプロイS3バケット、認可/非認可IAMロールの情報を出力し、providers.awscloudformationオブジェクトの下に記録される。

各カテゴリのプラグインは、それぞれの名前の下に情報をログとして記録する。1つのカテゴリが複数のサービスを作成する場合があるため、それぞれのカテゴリメタデータは一般的に2レベル構造になっている。

各サービスのメタデータは、amplify <category> addコマンドの実行後に最初にメタファイルにログとして記録され、カテゴリの実際のクラウドリソースが作成または更新されたことを示す情報が、amplify pushコマンドの成功した実行後にサービスのメタデータに追加/更新される。

aws-exports.js

編集:🆖
バージョン管理:🆖

JavaScriptプロジェクトでのみ生成される。

このファイルには、すべてのカテゴリからの統合された出力が含まれ、initプロセス中に指定されたsrcディレクトリ下に配置される。

このファイルは、設定のためにAmplify JavaScriptライブラリによって消費される。 このファイルには、クライアントからの認証されていない外部アクション(Authの場合のユーザー登録やサインインフローなど)や、認証が行われた後の適切なエンドポイントURLの構築にのみ必要とされる、機密性のない情報が含まれている。

amplifyconfiguration.json

編集:🆖
バージョン管理:🆖

aws-exports.jsと同様にJavaScriptプロジェクトでのみ生成される。

Amplify CLIで生成されるSwiftおよびAndroidプロジェクト用の設定ファイル。全カテゴリーの出力をまとめたもので、amplify push後に更新される。Amplify SwiftおよびAmplify Androidライブラリによって使用される。

.gitignore

編集:🆗
バージョン管理:🆗

説明不要な気もするが、新しいプロジェクトがAmplify CLIから初期化されるとルートディレクトリにこのファイルが追加される。プロジェクト用にリポジトリ管理対象外にするかどうかの設定が含まれる。

team-provider-info.json

編集:🆖
バージョン管理:🆗

プロジェクト情報をチーム内で共有するために使用されるファイル。

このファイルをチームメンバー間で共有することで、同じCloudFormationスタックにリソースをプッシュ/プロビジョニングできるようになる。加えて、チームがプッシュ/プル方式で作業できるようになり、クラウド上のプロジェクトの最新の状態と常に同期できるようになる。

プロジェクトをパブリックに共有し、サーバーレスインフラストラクチャをオープンソースにしたい場合は、amplify/team-provider-info.jsonファイルを削除するか、.gitignoreファイルへの追記が必要。

cli.json

編集:🆗
バージョン管理:🆗

プロジェクトのフィーチャーフラグ設定を含むファイル。Amplify CLIによって生成され、必要に応じて環境別の設定を定義することができる。

一般的なカテゴリーファイル

cli-inputs.json

編集:🆗
バージョン管理:🆗

CloudFormationスタック生成に必要な入力パラメータを格納するJSONファイル。関連リソースのスタックを生成するための入力パラメータを保存する。

override.ts

編集:🆗
バージョン管理:🆗

対応するCloudFormationスタックをオーバーライドするためのTypeScriptファイル。特定のカテゴリーでこれを作成するには、amplify override <category> を実行する。

<category>-parameters.json

編集:🆖
バージョン管理:🆗

amplify add <category> 実行時に選択したパラメータを保存するJSONファイル(function-parameters.json)など。amplify update <category> 実行時に使用され、CloudFormationテンプレートに渡される値をマッピングする。

parameters.json

編集:🆗
バージョン管理:🆗

CloudFormationパラメータ名とテンプレートに渡される値をマップするJSONオブジェクトを含むファイル。テンプレートにパラメータをプッシュする際に使用される。

機能カテゴリーファイル

amplify.state

編集:🆖
バージョン管理:🆗

CLIが関数をビルドおよび呼び出す方法に関する内部メタデータを含むファイル。

AppSync API カテゴリーファイル

transform.conf.json

編集:🆖
バージョン管理:🆗

GraphQLスキーマを解釈し、AppSyncリゾルバに変換する方法に関する設定を含むファイル。amplify api update を実行してAPIカテゴリーの設定を変更する。

共有ステートファイル

以下はすべてリポジトリ管理外とされ、特に直接編集する必要がないものになります。

~/.amplify/amplify-configuration.json

使用データをオプトインした場合、インストールUUIDが格納されるファイル。マシンからのデータを関連付けるために使用される。

~/.amplify/plugins.json

インストールされたすべてのAmplifyプラグインに関する情報を追跡するファイル。

~/.amplify/lib

実行時に一部のプラグインが必要とするファイルを含むディレクトリ。例えば、amplify mockで使用されるDynamoDBシミュレータ。

~/.amplify/bin/amplify (Windowsではamplify.exe)

Amplify CLIの実行可能ファイル。

~/.aws/amplify/deployment-secrets.json

amplify add auth や amplify update auth を使用して設定されたOAuth構成値を格納するファイル。設定がプッシュされるとファイルから削除される。

いいなと思ったら応援しよう!