AWS Amplifyでデプロイしたアプリを別アカウントのRoute 53で管理するサブドメインで公開する

2022.04.14

AWS Amplifyでデプロイしたアプリは自動的にamplifyapp.comのサブドメインで公開されますが、カスタムドメインを使用する事もできます。
その際にAWS Amplifyと同じアカウントのRoute 53で管理するドメインであれば簡単に設定することができますが、別アカウントのRoute 53で管理するサブドメインを使用する場合は追加の手順、もしくは別の手順が必要になります。

前提

  • AWSアカウントA
    • Route 53でexample.comを管理している
  • AWSアカウントB
    • AWS Amplifyでアプリをデプロイ済み
    • アプリをapp.example.comで公開したい

手順1 : 権限委譲されたサブドメインを追加する

サブドメインの権限委譲を行う

下記を参考にアカウントAからアカウントBにapp.example.comを権限委譲します。

[Route 53] 別のAWSアカウントでサブドメインを使えるように権限移譲する

カスタムドメイン設定を行う

あとは同じアカウントのRoute 53で管理するドメインを使用する場合と同じ手順です。
アカウントBのAmplify Consoleからアプリを選択し、アプリの設定 > ドメイン管理 からドメインの追加を行います。

ドメインの追加

アカウントAから委譲されたapp.example.comを選択してドメインの設定を行なった後、保存します。

ドメインを設定

注意 サブドメインを選択した際に下記の警告が出ます。
問題なく動作しましたが、推奨される方法ではないのでご自身の環境で十分に検証した上で設定してください。 マルチレベルドメイン選択時の警告

参考: Set up automatic subdomains for a Amazon Route 53 custom domain

This feature is available only for root domains, for example, exampledomain.com. The Amplify console doesn't display this check box if your domain is already a subdomain, such as dev.exampledomain.com.

ステータスが SSLを作成 > SSL設定 > ドメインアクティベーション と進み、利用可能になれば設定完了です。

手順2 : 3rdパーティーDNSプロバイダーのドメインとして追加する

参考: Add a custom domain managed by a third-party DNS provider

カスタムドメイン設定を行う

アカウントAのホストゾーンにapp.example.comのCNAMEレコードを追加していない状態で、アカウントBのAmplify Consoleからアプリを選択し、アプリの設定 > ドメイン管理 からドメインの追加を行います。
先にCNAMEレコードを追加すると上手くいかないので注意してください。

ドメインの追加

ドメインにexample.comと入力し、ドメインを設定をクリックします。
https://example.comへのルートを除外し、サブドメインのwwwappに書き換え保存します。

ドメインとサブドメインを設定

ステータスが SSLを作成からSSL設定に進むと下記の表示になります。

SSLの設定

CNAMEレコードを控える

アクションからDNSレコードの表示をクリックし、2つのCNAMEレコードのレコード名と値を控えます。

CNAMEの表示

CNAMEレコードを作成する

アカウントAのRoute 53に移動し、example.comのホストゾーンに控えたレコード名と値でCNAMEレコードを作成します。
CNAMEレコードの作成はAmplify Consoleからカスタムドメインを追加した直後に行なってください。
時間が空くとSSL設定のステータスで止まってしまう事があります。

CNAMEを追加

アカウントBのAmplify Consoleに戻り、ステータスが SSL設定 > ドメインアクティベーション と進み、利用可能になれば設定完了です。

最後に

ドメインを管理するアカウントへのアクセス権限を持っておらず、ホストゾーンへのNSレコードやCNAMEレコードの作成を他の人へ依頼しなければいけない場合は、手順1の権限委譲を行う方が時間制限がないので容易です。ただし、推奨されている方法ではないのでご自身の環境で十分に検証を行なった上で設定して頂くようお願いします。