事象
S3に置いたHTMLファイルに独自ドメインを設定してCloudFront経由でHTTPS通信の設定をしたのちに、ルートディレクトリにアクセスすると以下のような404エラーが表示されてしまいました。
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<Error>
<script/>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>XEPEYVGSA5HNY19B</RequestId>
<HostId>SNHMf5z/OAX0LzEkGR7+GPaJMHN6jdKeoQDF+fy6qFvfXm7t8SQO9xxxxxx=</HostId>
</Error>
ムームードメインでドメインを取得して、Route53でエイリアスレコードを追加済。証明書も設定済。digコマンドを実行するとANSWER SECTIONが表示されているので、CNAME(代替ドメイン)の設定は正しくできているのになぜ!?ハマったので解決方法をメモしておきます。
原因
CloudFront ディストリビューションでデフォルトルートオブジェクトの設定ができていなかったのが原因でした。
参考サイト:AWS公式 デフォルトのルートオブジェクトの指定 – デフォルトのルートオブジェクトの仕組み
解消方法
↓CloudFrontコンソールで、デフォルトルートオブジェクトを参照するようにディストリビューションを更新していきます。まずは、CloudFrontコンソールを開いて、一般タブの設定フィールドの「編集」ボタンをクリックします。
↓下の方の「デフォルトルートオブジェクト – オプション」にデフォルトルートオブジェクトのファイル名を入力します。今回は「index.html」を入力して「変更を保存」をクリックします。オブジェクトの間に「/」は不要です。
この設定をしたことで、 https://example.comにアクセスすると、https://example.com/index.htmlの内容が表示できました!
コメント