AWS Amplify に AWS CloudFormation でカスタムドメイン (Zone Apex) を設定する

こんにちは、広野です。

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

これにて、マネジメントコンソールで設定したときと同じ状態にすることができました。

まとめ

いかがでしたでしょうか。

今回はニッチな情報でしたが必要な方には必要なものだと思います。

本記事が皆様のお役に立てれば幸いです。

著者について
広野 祐司

AWS サーバーレスアーキテクチャを駆使して社内クラウド人材育成アプリとコンテンツづくりに勤しんでいます。React で SPA を書き始めたら快適すぎて、他の言語には戻れなくなりました。サーバーレス & React 仲間を増やしたいです。AWSは好きですが、それよりもフロントエンド開発の方が好きでして、バックエンド構築を簡単にしてくれたAWSには感謝の気持ちの方が強いです。
取得資格:AWS 認定は13資格、ITサービスマネージャ、ITIL v3 Expert 等
2020 - 2024 Japan AWS Top Engineer 受賞
2022 - 2024 AWS Ambassador 受賞
2023 当社初代フルスタックエンジニア認定
好きなAWSサービス:AWS Amplify / AWS AppSync / Amazon Cognito / AWS Step Functions / AWS CloudFormation

広野 祐司をフォローする

クラウドに強いによるエンジニアブログです。

SCSKクラウドサービス(AWS)は、企業価値の向上につながるAWS 導入を全面支援するオールインワンサービスです。AWS最上位パートナーとして、多種多様な業界のシステム構築実績を持つSCSKが、お客様のDX推進を強力にサポートします。

AWSアプリケーション開発クラウドソリューション
シェアする
タイトルとURLをコピーしました