AWS Amplify Advent Calendar 2020の
12月16日を担当させてだくDysonです。
今日は私の誕生日です
AmplifyのMulti Environmentを使うと同じコードで環境の分離ができます。
例えば、商用環境、ステージング環境、開発環境の分離をamplifyで行うことができます。
開発を行っていく上ではかなり重宝します。
参考: Amplify Multi Environment でチーム開発を整備する
https://dev.classmethod.jp/articles/amplify-multienv-team-dev/
multienvは便利なのですが、Gitブランチの切り替え時にenvの切り替えを
忘れていたり、自動で書き換わる別envの設定ファイルで競合が起きたりするので
個人的にやっていることを紹介します。
1. Gitブランチの切り替え時にenvの切り替えを忘れを防ぐ
切り替えようのスクリプトを作成しました。
- bin/checkout-env.sh
#!/bin/sh
declare -A branches=(
["prod"]="master"
["staging"]="staging"
["dev"]="develop"
)
PS3="Select checkout env: "
select selected in "${!branches[@]}"
do
target=$selected
break
done
echo "Checkout: $target"
git checkout ${branches[$target]} && amplify env checkout $target
- 実行方法
$bin/checkkout-env.sh
1) dev
2) prod
3) staging
Select checkout env: 2
Checkout: prod
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
✔ Initialized provider successfully.
Initialized your environment successfully.
実行時にenvを数字で指定します。(以前は引数でenvを指定でしたが、選択式に変更しました。)
envの切り替えを先に行うとファイルの書き換えによりGitブランチが変更できないので先にGitブランチ切り替えを実行しています。
※env名とブランチ名は各自の環境に合わせてスクリプトの変更が必要になります。
2. 別envの設定ファイルで競合を回避する
Amplifyのenvの切り替えやamplify pushを行うと設定ファイルやCloudFormationの
テンプレートが更新されます。
.gitignoreでファイルを除外する方法もありますが、管理対象からは除外したくなかったので
.git/configと.gitattributesに競合時は自ブランチのファイルを優先する設定を追加しました。
- .git/config
[merge "ours"]
name = "Keep ours merge"
driver = true
- .gitattributes
src/aws-exports.js merge=ours
amplify/team-provider-info.json merge=ours
amplify/backend/api/*/build/cloudformation-template.json merge=ours
amplify/backend/api/*/build/parameters.json merge=ours
amplify/backend/auth/*/parameters.json merge=ours
amplify/backend/function/*/*-cloudformation-template.json merge=ours
その他こんな工夫をしているとかあれば教えて下さい!
それではMerry Amplify