メインブログを CloudflareからAWS S3に移行した際に、S3のBlock pubic accessをオフ、Static website hostingをオンにしていたので、CloudFrontがS3のREST APIエンドポイントを使用するよう修正しました。この場合CloudFrontはサブディレクトリのindex.htmlファイルを自動的に解決することができないので、以下のURLのパスを適切に変換するCloudFront Functionsを追加しました。あるあるですね。
function handler(event) {
var request = event.request;
var uri = request.uri;
// URIが/で終わる場合、index.htmlを追加
if (uri.endsWith('/')) {
request.uri += 'index.html';
}
// 拡張子がない場合もindex.htmlを追加
else if (!uri.includes('.')) {
request.uri += '/index.html';
}
return request;
}