やりたいこと
App Runnerのカスタムドメインで設定したドメインに、www
サブドメイン付きでアクセスしても同じサイトを表示させてあげたい
要するに……
https://test.com/
https://www.test.com/
このどちらで来ても同じサイトを表示したい、というケースの対応方法を解説します。
注) 同じサイトを表示するだけで、いずれかにリダイレクトするものではないです
手順
1. App Runnerでアプリケーション公開
今回は、ここは済んでいる前提で。
2. カスタムドメインの設定
注意ポイントです。
2023/08/06時点では、コンソールからでは、メインドメインとwww
サブドメインの両方をまとめて設定することができません。
APIで、サポートされているということなので、今回はboto3(python)で設定を進めます。
また、既にカスタムドメインを設定している場合、現状、変更ができないようで、後からwww
サブドメインにも対応できる設定書き換えよう、ということはできませんでした。
そのため、自分は設定済みのカスタムドメインを一度、削除してから再度、API経由で設定をし直しました。
その際に、紐付けていたドメインでは数時間弱アクセスできない可能性があるので、ご注意ください。
では、boto3のコードです。
import boto3
import json
my_session = boto3.Session(profile_name='YOUR_PROFILE_NAME')
client = my_session.client('apprunner')
arn = 'arn:aws:apprunner:ap-northeast-1:000000000000:service/~~~~~~~'
response = client.associate_custom_domain(
ServiceArn=arn,
DomainName='test.jp',
EnableWWWSubdomain=True
)
print(json.dumps(response, indent=2))
EnableWWWSubdomainをTrueにするのが重要です。
ここの値をTrueにすることでwww
サブドメインの設定もまとめて出来るようになります。
3. Route53でレコードの設定をする
AWSコンソールに戻って、App Runnerのカスタムドメインの「DNSの設定」を確認すると、コンソールからGUI操作でサブドメイン作成したときは表示されなかったwww
サブドメイン用のCNAME レコードが表示されています。(「1. 証明書の検証を設定する」という項目に計3つのCNAMEが表示されているかと思います。)
次に、ALIASレコードを設定します。
App Runnerのカスタムドメインの「DNSの設定」の「2. DNS ターゲットを設定する」には、メインドメインの設定しか書いていませんが、www
サブドメインも同様に、www.test.com
のようなAレコードを作成してメインドメインと同じALIASレコードを登録します。
設定の反映まで少々時間がかかりますが、だいたい数時間程度で反映されるかと思います。
公式ドキュメント読まないと気づけない機能だったので、コンソールにもAPI経由では可能です、とか書いておいて欲しいですね……地味に需要があって、追加された機能だと思うので。
そのうち、コンソールからの設定はもちろん、後付けで設定もできるようになるのかな。
App Runnerの今後の機能拡張に期待です!!