独自ドメインを指定した CloudFront から S3 のデフォルトドメインにリダイレクトされてしまう原因の備忘録メモです。
一般的な静的 Web サイト実装で Route53
- CloudFront
- S3
を利用する構成での出来事です。
CloudFormation で上記環境を作って、開発環境で無事動く状態になりました。
本番環境も、CloudFormation なら一発で同じリソースを作成できるので、CloudFormation スタック作ればすぐ作成完了!
と思ったのですが、できあがった URL にアクセスすると S3 のドメインにリダイレクトされてしまう現象が発生しました...
全く同じ設定を使ってるはずなのになぜだ?と公式ドキュメントを探すと原因が判明しました。
Amazon S3 バケットを作成後、そのバケット名がすべての AWS リージョンに伝達されるまで、最大で 24 時間ほどかかる場合があります。
これが原因であれば、同じ設定をしているのに動作が違うことについて、納得できます。
しばらく放置しているとちゃんと Route53 のドメインでアクセスできるようになりました。
急いでいる場合は、明示的にリージョン指定すると良さそうです。
バケットを作成後 24 時間以内に Amazon S3 にアクセスする必要がある場合は、バケットのリージョンのエンドポイントが含まれるように、このディストリビューションのオリジンドメイン名を変更します。たとえば、バケットが us-west-2 にある場合は、オリジンドメイン名を bucketname.s3.amazonaws.com から bucketname.s3-us-west-2.amazonaws.com に変更することができます。
公式ドキュメント優秀ですね。
だいたい調べたいことが見つかります。
前回の記事 と同様で、「何もしてないのに直った」という時間が解決することが AWS では稀によくあります。