1つのAmplifyプロジェクトをみんなで開発するためのメモ
書くことはほとんど公式の中身だが、日本語説明&自分の経験を少し絡めて書こうと思います。
既にAmplifyで誰かがプロジェクト AAA を立ち上げてamplify push済み
環境名は devとします。
このdevはGitにコミット済み devブランチです。
さて、ここでプロジェクトにメンバーkobashi追加されました。彼がまず最初にやることは
$git checkout -b dev
$amplify init
? Do you want to use an existing environment?
Yes
? Choose the environment you would like to use:
dev
? Choose your default editor:
好きなエディタを選ぶ
? Select the authentication method you want to use:
AWS profile
? Please choose the profile you want to use
使用してるAWSプロファイル
✔ Initialized provider successfully.
Initialized your environment successfully.
$amplify status
Current Environment: dev
┌──────────┬────────────────────────────────────────┬───────────┬───────────────────┐
│ Category │ Resource name │ Operation │ Provider plugin │
├──────────┼────────────────────────────────────────┼───────────┼───────────────────┤
│ Function │ ******************** │ No Change │ awscloudformation │
├──────────┼────────────────────────────────────────┼───────────┼───────────────────┤
│ Auth │ *********** │ No Change │ awscloudformation │
├──────────┼────────────────────────────────────────┼───────────┼───────────────────┤
│ Api │ *********** │ No Change │ awscloudformation │
├──────────┼────────────────────────────────────────┼───────────┼───────────────────┤
│ Storage │ *********** │ No Change │ awscloudformation │
└──────────┴────────────────────────────────────────┴───────────┴───────────────────┘
これで Amplify AAAプロジェクトのdev環境が持ってこれた。
この環境で編集してpushしていくと、他のメンバーとの間で競合が発生するリスクがある
Amplifyでは開発者毎に環境を持つことができるので、自分の個人環境で開発を進める。
自分の名前 kobashi amplify環境で開発をする
$amplify env add kobashi
Using default provider awscloudformation
? Select the authentication method you want to use:
AWS profile
? Please choose the profile you want to use
使用してるAWSプロファイル
Adding backend environment kobashi to AWS Amplify app: *************
⠙ Initializing project in the cloud...
$amplify env list
| Environments |
| ------------ |
| dev |
| *kobashi |
この時点ではまだCloud上には作成されてない
$amplify status
Current Environment: kobashi
┌──────────┬────────────────────────────────────────┬───────────┬───────────────────┐
│ Category │ Resource name │ Operation │ Provider plugin │
├──────────┼────────────────────────────────────────┼───────────┼───────────────────┤
│ Function │ ******************** │ Create │ awscloudformation │
├──────────┼────────────────────────────────────────┼───────────┼───────────────────┤
│ Auth │ *********** │ Create │ awscloudformation │
├──────────┼────────────────────────────────────────┼───────────┼───────────────────┤
│ Api │ *********** │ Create │ awscloudformation │
├──────────┼────────────────────────────────────────┼───────────┼───────────────────┤
│ Storage │ *********** │ Create │ awscloudformation │
└──────────┴────────────────────────────────────────┴───────────┴───────────────────┘
クラウドにプッシュする
$amplify push
これでkobashi環境が作成できる。このkobashi環境で開発を行う。
AWSコンソールにログインすると CognitoやAppsync、Dynamoなどに
リソース名-kobashi
というネーミングルールで自分用の環境が生まれたことが確認できる。
なおgit上では devブランチのローカルファイルに今のAmplify操作での変更が入ってしまっている状態だと思う。
あくまでkobashi環境に合わせての変更だから、gitも devからkobashiブランチを作成してコミット。dev上ではコミットしないこと。(自分はソースツリーを使っているので、gitのコマンド操作は割愛)
つまり git(kobashi) と amplify(kobashi) が一対一の関係になるようにする
で、開発が終わったらgit(kobashi)の変更をコミット
最後にdev環境で動作確認する
$amplify env checkout dev
$git checkout dev
gitをdevに戻す際に team-provider-info.json がローカルで変更されている旨のアラートが出る。どうもamplify env checkout dev した際に team-provider-info.json にkobashi側環境での変更情報を書き込むために起きるアラート
このままローカル変更を破棄すると、kobashi環境で作業した変更が消えてしまうので、いったんスタッシュして、team-provider-info.json を確保しておく。
※amplify initで .gitignoreに無視するべきファイル名が書き込まれるけど、team-provider-info.jsonは含まれないために起こる現象
※team-provider-info.jsonを無視する運用をすればこの現象は起きない。
※もしくはgitコミット>マージ>amplify env checkout の順番で操作すれば、アラート出さずにマージできる
その上で git(kobashi)=>git(dev)のマージを行って、スタッシュをteam-provider-info.jsonに適応することで対応した。
ともあれソース的にはdevに全ての変更が反映されたので
$amplify push
これでdev上で動作確認
最後にkobashi環境を掃除します。
amplify env remove kobashi
? Are you sure you want to continue? This CANNOT be undone. (This will delete 'kobashi' environment of the project from the cloud) (y/N)
yes
AWSコンソールから、-kobashi環境が無くなったのを確認したら作業終了
Tips:この削除が重要で、AWSではCloudFormationのスタックの数(DynamoとかAppsyncとかLamdaとかの数)使用上限が200までらしいです。申請すれば増やせるそうですが、不要な個人環境は削除する癖をつけておきましょう。