発生条件
Shifter にアタッチしようとしているドメインが、既存の CloudFront にすでに登録されている場合に発生します。
発生理由
Shifter は CDN に CloudFront を採用しており、AWS の仕様に従い、CloudFront 上でドメイン名はユニークでなければなりません。そのため、同じドメインを別の CloudFront に設定しようとするとエラーが発生します。
Use custom URLs by adding alternate domain names (CNAMEs)
回避策
以下のいずれかの方法でエラーを回避できます。
回避策A 既存のドメインとは別なドメインを Shiter にアタッチし、運用する
既存のドメインとは異なるドメインを使用することで、エラーを回避できます。
- 例:既存のドメイン
example.com
に対し、Shifter 用のドメインshifter.example.com
を使用する。
回避策B 既存の CloudFront から当該ドメインをデタッチ・削除した後、 Shifter にアタッチする
- 既存の CloudFront から対象ドメインを削除する。
- Shifter のサイトに接続するよう DNS レコードを変更する。
- 変更後、Shifter のサイトにドメインをアタッチする。
- Shifter のサイトをジェネレートする。
注意: CloudFront からドメインを削除した時点で、そのドメインによるアクセスが一時的に 403 Forbidden となる可能性があるため、アクセスが少ない時間帯に実施することを推奨します。
CloudFrontのCNAMEAlreadyExistsエラーを解決するフローチャート(2021年夏版) の記事が分かりやすいです。
回避策C Shifter のアーティファクトに対してのみドメインを適用する (要 shifter-cli)。
Shifter 全体ではなく、アーティファクトに対してのみカスタムドメインを適用することで、CNAME Already Exists
エラーを回避できます。ただし、この方法を使用する場合、リバースプロキシなどを設定し、外部サーバーからのアクセスを適切に転送する必要があります。
実行手順:
shifter-cli
をインストールする。- 以下のコマンドを実行し、カスタムドメインをアタッチする。
$ shifter attach --username USERNAME --password PASSWORD --site-id YOUR-SITE-ID --domain DOMAIN --no-shifter-cdn
参考: