こんにちは、広野です。
AWS Amplify は以前はカスタムドメインに Zone Apex を設定できなかった記憶があるのですが、今ではできるようになっていました。(※私の勘違いかもしれませんが)
そして、マネジメントコンソールでは簡単に設定できますが、AWS CloudFormation ではどのように設定すればよいのかわかりませんでした。AWS 公式ドキュメントにも掲載がなく、ネット上の情報もなかったので、ここで紹介しておきます。
参考: マネジメントコンソールでの設定方法
ストレートに Zone Apex の設定方法が書かれていないのですが、「ルートを除外する」だと Zone Apex を登録しない、「ルートを含む」だと Zone Apex を登録するようになっています。
設定すると、AWS が自動でデプロイした Amazon CloudFront ディストリビューションをターゲットにした Amazon Route 53 エイリアスレコードが作成されました。モザイクで隠していますが、レコードは Zone Apex です。この Amazon CloudFront ディストリビューションは AWS 管理下にあり、このドメイン名に対してさらにエイリアスレコードを作成しようとしても、拒否されました。
AWS CloudFormation による設定方法
カスタムドメインは AWS::Amplify::Domain のリソースとして設定します。
公式ドキュメントでは、その中の Prefix という項目でサブドメインを設定できます。例えば www.domain.com であれば Prefix に www を設定します。では、URL を Zone Apex (この場合、domain.com) にしたい場合はどう書くのか?は掲載されていませんでした。
実のところ簡単で、Prefix に空文字 “” を指定すればよいだけのことでした。
以下、AWS CloudFormation テンプレートの抜粋です。
AmplifyDomainProd:
Type: AWS::Amplify::Domain
Properties:
AppId: !GetAtt AmplifyConsole.AppId
DomainName: xxxxxx.xxx
CertificateSettings:
CertificateType: CUSTOM
CustomCertificateArn: !Ref CertificateArn
SubDomainSettings:
- BranchName: main
Prefix: ""
EnableAutoSubDomain: false
これにて、マネジメントコンソールで設定したときと同じ状態にすることができました。
まとめ
いかがでしたでしょうか。
今回はニッチな情報でしたが必要な方には必要なものだと思います。
本記事が皆様のお役に立てれば幸いです。