AWS Amplifyでデプロイしたアプリを別アカウントのRoute 53で管理するサブドメインで公開する
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
へのルートを除外し、サブドメインのwww
をapp
に書き換え保存します。
ステータスが SSLを作成からSSL設定に進むと下記の表示になります。
CNAMEレコードを控える
アクションからDNSレコードの表示をクリックし、2つのCNAMEレコードのレコード名と値を控えます。
CNAMEレコードを作成する
アカウントAのRoute 53に移動し、example.com
のホストゾーンに控えたレコード名と値でCNAMEレコードを作成します。
CNAMEレコードの作成はAmplify Consoleからカスタムドメインを追加した直後に行なってください。
時間が空くとSSL設定のステータスで止まってしまう事があります。
アカウントBのAmplify Consoleに戻り、ステータスが SSL設定 > ドメインアクティベーション と進み、利用可能になれば設定完了です。
最後に
ドメインを管理するアカウントへのアクセス権限を持っておらず、ホストゾーンへのNSレコードやCNAMEレコードの作成を他の人へ依頼しなければいけない場合は、手順1の権限委譲を行う方が時間制限がないので容易です。ただし、推奨されている方法ではないのでご自身の環境で十分に検証を行なった上で設定して頂くようお願いします。