63’s blog

都内のSEのブログです(*‘ω‘ *)技術は好きですが仕事は嫌いです。

CloudFront S3のURLにリダイレクトされる

最近よく使うのがCloudFrontとS3の組み合わせです。
WebsitehostingでAngularやVueを公開したい時に便利なんですよね.

仕事でも案件の最初に作ってって言われること多いんですよね。

PM「作っといて~」
自分「はーい」

実際、難しいことは特にないんですよ。
S3のバケット作って、CloudFrontの設定して、
バケットポリシー設定して、、、終わる話ですもん(っ´ω`c)
ただ、どこかで設定をミスっていたりすると
原因が分かりづらいのがこの作業の面倒なところだと思います。

作業手順書を作って、
誰でも作成できるようにしといたとしても
どこかの設定ミスがあったら、S3に到達できなかったり
誰でもアクセスできるような設定になってしまいますよね。
そこでTerraformで一括で作成できるようにしました。
Terraformについては別で記事を書きます。

前置き長くなりましたが、本題です。
いざ、CloudFrontで自動生成されたドメインからアクセスしようとしたら、
S3のWebSitehostingのURLに変わってました・・・(゚∀゚)ナンデ!?

今まで通り作っているはずなのにどうして!?←Terraformで初めて作ったので今まで通りではない。
調べるとS3のバケットが全てのリージョンに反映されるまで1日かかることがあることが判明しました!

正直こんなの初めて知りました。(゚∀゚)←まじこんな
未反映のリージョンでアクセスがあるとデフォルトURL(s3.amazonaws.com)が返されるため、
仕方なく、S3のURLにリダイレクトがかかるとのことでした。

なので、CloudFrontのOrigin Pathに
「<バケット名>.s3-(S3を作成したリージョン).amazonaws.com」を設定すると
勝手なリダイレクトがかからずにCloudFrontのドメインのままアクセスが可能になります。
Ex.東京リージョンなら、「<バケット名>.s3-ap-northeast-1.amazonaws.com」

こんなの普段作成するだけだったら全然気づかないところですね…(゚∀゚)