スクリプト
# フロントの成果物を"./build.zip"に固めておく
APP_ID=<Amplify APP ID>
BRANCH_NAME=<Git Branch>
# Amplifyのフロント環境を作成
aws amplify create-branch --app-id "$APP_ID" --branch-name "$BRANCH_NAME" --stage "EXPERIMENTAL"
# 手動デプロイを作成
DEPLOY_RES=$(aws amplify create-deployment --app-id "$APP_ID" --branch-name "$BRANCH_NAME")
DEPLOY_JOB_ID=$(echo $DEPLOY_RES | jq -r ".jobId")
UPLOAD_URL=$(echo $DEPLOY_RES | jq -r ".zipUploadUrl")
# 成果物をアップロード
curl -D - -X PUT --header "Content-Type:application/octet-stream" --upload-file $(pwd)/build.zip "$UPLOAD_URL"
# デプロイ開始
aws amplify start-deployment --app-id "$APP_ID" --branch-name "$BRANCH_NAME" --job-id "$DEPLOY_JOB_ID"
DEPLOY_URL=$(echo $BRANCH_NAME | sed -e s:[_/]:-:g)
# このURLで公開されてます
echo "https://$DEPLOY_URL.$APP_ID.amplifyapp.com"
なんでこんなことを?
レビュー時にローカルにチェックアウトして動作確認するのが手間なので
プッシュされたらAmplifyのフロント環境をCI/CDで構築したかった
AmplifyにGithubと連携してプルリク用のプレビュー環境を作ってくれる機能があります
使える方はそちらのほうが楽です。
Enterprise版のGithubを使ってたりGitlabを使ってたりで使えない方はこんな感じでCI/CDに組み込めます。
※このままだとプルリククローズ後も環境が残り続けるので、実際の運用はゴミ掃除も必要です