S3+CloudFrontの構成で静的Webサイトを構築した場合、サブフォルダまたはサブディレクトリからデフォルトのルートオブジェクトを返さないという問題に対し、Lambda@Edge(L@E)で解決するという記事をよく見かけますが、CloudFrontFunctions(CF2)でも実現することができました。
CF2はL@Eより手前で、シンプルな処理をより高速に、素早く、安価に実行できるサービスです。
今回のように URLにファイル名や拡張子を含まないリクエストにindex.htmlを追加するだけ
といった単純なユースケースではより最適な方法かと思います。
やってみた
コードを拾ってくる
コードサンプルがAWS公式のCloudfrontデベロッパーガイドに載っているので以下のページからコピーします
index.html を追加してファイル名を含まない URL をリクエストする
CF2に追加
CloudFront>関数にアクセスし、適当な名前をつけて保存します
関数を発行する
発行>関数を発行 をポチります(コレをやらないとCloudFrontと紐付けができない
CloudFrontにCF2を関連付ける
CloudFrontの該当するディストリビューション > Behavior > 編集 からViewerRequestに関連付けを行います
以上
ググったら出てこなかったので,投稿してみました。