目次
CloudFrontの代替ドメインでワイルドカードを指定すると知らないページが表示された
こんにちは。
SRE課の栩野です。
先日、CloudFrontで奇妙な出来事が起きたので紹介します。
発生した事象
CloudFrontのディストリビューションを作成する際に、代替ドメイン名の設定を
「*.ドメイン名」のようにワイルドカードで設定し、DNSの「test.ドメイン名」のエイリアス
レコードを、作成したディストリビューションに向くように設定し、サイトを確認したところ...
覚えのない知らないサイトが表示されました...
???
原因
覚えのないサイトが表示された理由ですが、別のAWSアカウントで同ドメインを使った
代替ドメイン名「test.ドメイン名」のディストリビューションが既に存在しており
そちらのサイトが優先的に表示されていることが原因でした。
DNSのエイリアスレコードを新たに作成したディストリビューションに向けてるので
そっちが表示されるものと思ったのですが...
代替ドメイン名の挙動
代替ドメイン名は、CloudFrontで独自ドメインを使用するための設定ですが
他のディストリビューションで既に名前が使用されている場合「CNAMEAlreadyExists」
のエラーが発生し使用することが出来ないため、設定はグローバルで一意である必要があります。
以前はワイルドカードを設定した場合、そのドメインのサブドメインは全て
「CNAMEAlreadyExists」の重複エラーとなり、サブドメインが作成できなくなるという制約
があったようですが、現在はワイルドカードが存在してもサブドメインで代替ドメインの
設定が可能になっているようです。
今回の事象が発生したのは、ワイルドカードとサブドメインの代替ドメイン名が重複して存在
する場合、サブドメインが明示的に代替ドメイン名に設定されたディストリビューションが
表示される仕様になっていたことから発生していたものと思われます。
事象の再現
実際に発生した事象を再現してみます。
CloudFrontで代替ドメインの設定を「test.ドメイン名」にしたディストリビューションと
「*.ドメイン名」にしたディストリビューション、二つのディストリビューションを用意しました。
- 設定1 代替ドメイン サブドメイン指定パターン
「test.ドメイン名」
オリジンサイトは以下の表示
- 設定2 代替ドメイン ワイルドカード指定パターン
「*.ドメイン名」
オリジンサイトは以下の表示
「test.ドメイン名」のDNSレコードは、設定2のディストリビューションに向けています。
この状態でサイトにアクセスすると、設定2のディストリビューションにDNSのエイリアスレコードを
向けてるんだから設定2のサイトが表示される。と思いきや...
設定1のオリジンサイトが表示されました...
設定1のディストリビューションを削除すると、設定2のオリジンサイトが表示されるようになります。
このように、代替ドメイン名がワイルドカードとサブドメインのものとが重複した場合
サブドメインを明示的に指定した設定が優先的に表示されてしまうため注意が必要です。
といったお話でした。
参考
Amazon CloudFront ドキュメント
https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/CNAMEs.html
運用サービス課 課長
運用・監視の設計から導入まで、運用サービスを担当してます。
運用監視やセキュリティ関連の話題に興味があるので、そのあたりのブログを多めで投稿していきたいと思ってます。
LINK
クラウドベリージャム:プロフィールページ