EatSmartシステム部ブログ

ウェブサイトの開発や運営に関する情報です。

Amplify プレビューで割り当てられたURLを参照する

認証に Auth0 を利用する場合、戻り先のURLを指定する必要があります。 本番環境なら固定されたURLを指定することが出来ますが、Pull Request ごとに Amplify プレビューを利用する場合はURLを固定することが出来ません。 このため、ビルド処理で割り当てられたURLを環境変数へセットするようにしてみました。

プルリクエストのウェブプレビュー - AWS Amplifyホブ

検証した環境は、Next.js で Auth0 を利用したものです。 この際、Next.js も Auth0 も最新のバージョンにする必要がありました。 どちらかのバージョンが古いと、ログイン・ログアウトの際に503エラーが発生してしまいました。

amplify.yml の設定では、以下のように Auth0 で利用する環境変数をセットする処理を記述していました。

version: 1
frontend:
  phases:
    preBuild:
      commands:
        - npm install
    build:
      commands:
        - npm run build
        - echo "AUTH0_CUSTOM_DOMAIN=$AUTH0_CUSTOM_DOMAIN" >> .env
        - echo "AUTH0_SECRET=$AUTH0_SECRET" >> .env
        - echo "AUTH0_BASE_URL=$AUTH0_BASE_URL" >> .env
        - echo "AUTH0_ISSUER_BASE_URL=$AUTH0_ISSUER_BASE_URL" >> .env
        - echo "AUTH0_CLIENT_ID=$AUTH0_CLIENT_ID" >> .env
        - echo "AUTH0_CLIENT_SECRET=$AUTH0_CLIENT_SECRET" >> .env

Amplify の環境変数で指定した AUTH0_BASE_URL が戻り先URLに利用されます。 これでは Amplify プレビューで認証後に元のアプリケーションに戻ることが出来ません。 そこで、Amplify に提供される環境変数を利用して、Amplify プレビューのURLを環境変数にセットするように変更しました。

-        - echo "AUTH0_BASE_URL=$AUTH0_BASE_URL" >> .env
+       - echo "AUTH0_BASE_URL=https://pr-${AWS_PULL_REQUEST_ID}.${AWS_APP_ID}.amplifyapp.com" >> .env

この変更で、Next.js + Auth0 が参照する環境変数 AUTH0_BASE_URL が Amplify プレビューごとのURLになり認証後に元のアプリケーションへ戻ることが出来るようになります。