AWS Amplify Consoleではドメインに対してデプロイの紐付けを行うことができます。
これにより複数のバージョンをビルド・デプロイしておき、関連付けを変えるだけでバージョンの差し替えが可能です。
ウェブコンソール上で簡単に変えることもできますが、複数のアプリを一括で変更したい際や、CIに組み込んで自動で変更を行いたい場合にはAWS CLIを利用すると可能になりました。
変更自体は下記のように amplify update-domain-association
を呼ぶと可能です。
$ aws amplify update-domain-association --app-id ${APP_ID} --domain-name ${DOMAIN} \
--sub-domain-settings "[{"branchName": "release/'v1.0.0'", "prefix": ""}]" > /dev/null
#!/usr/bin/env bash
#set -xe
set -e
# Amplifyでのブランチ関連付けを一括で変更するスクリプトです
APP_ID=xxxxxxxx # AmplifyのアプリID
TARGET_VERSION=${1-v2.0.0} # 切り替えを行いたいバージョン
DOMAIN_SETTINGS_JSON='[{"branchName": "release/'${TARGET_VERSION}'", "prefix": ""}]'
echo ${DOMAIN_SETTINGS_JSON}
DOMAIN=$(aws amplify list-domain-associations --app-id ${APP_ID} | jq -r '.domainAssociations[].domainName' &)
VERSION=$(aws amplify list-domain-associations --app-id ${APP_ID} | jq -r '.domainAssociations[].subDomains[].subDomainSetting.branchName' &)
## 現在設定の表示
echo Current Assosiation
wait
echo ${DOMAIN} ' => ' ${VERSION}
## 関連付けを更新
aws amplify update-domain-association --app-id ${APP_ID} --domain-name ${DOMAIN} \
--sub-domain-settings "${DOMAIN_SETTINGS_JSON}" > /dev/null
## 変更の確認
VERSION=$(aws amplify list-domain-associations --app-id ${APP_ID} | jq -r '.domainAssociations[].subDomains[].subDomainSetting.branchName' &)
echo ${DOMAIN} ' => ' ${VERSION}
実行するとこんな感じです。
$ ./change_amplify_version.sh v2.0.0
[{"branchName": "release/v2.0.0", "prefix": ""}]
Current Assosiation
testing.example.com => hotfix/v1.12.7
Current Assosiation
Current Assosiation => release/v1.12.7