AWS CloudFront で index.html なしでアクセス

AWS の CloudFront と S3 の構成において、URL に index.html を入力せずに、index.html を表示させることが可能です。
具体的には、https://example.com/test/ にアクセスして、https://example.com/test/index.html を表示させることができます。

設定方法

関数の作成

CloudFront に接続して、左ペインの「関数」から「関数を作成」をクリックします。
その後、関数の名前(例では test)を入力し、「関数を作成」をクリックします。

関数を入力し、「変更を保存」をクリックします。

関数は以下のとおりです。最新版はこちらをご確認ください。

function handler(event) {
    var request = event.request;
    var uri = request.uri;

    // Check whether the URI is missing a file name.
    if (uri.endsWith('/')) {
        request.uri += 'index.html';
    }
    // Check whether the URI is missing a file extension.
    else if (!uri.includes('.')) {
        request.uri += '/index.html';
    }

    return request;
}

作成した関数をクリックし、「発行」>「関数を発行」をクリックします。

「関数を発行」しなかった場合、「関数を紐づけ」を行うと、次のエラーとなりますのでご注意ください。

The parameter FunctionAssociationArn is invalid; test was not found or is not published.

関数の紐づけ

左ペインの「ディストリビューション」>「ディストリビューション」>「ビヘイビア」>「編集」をクリックします。

関数の関連付け」のビューワーリクエストで、関数タイプに「CloudFront Functions」を選択し、関数 ARN/名前に作成した関数名(例では test)を選択し、「変更を保存」をクリックします。

以上

関連記事

Amazon S3 の静的ウェブホスティングを使用して、Web サイトを構築する手順を紹介します。 Amazon S3 とは Amazon S3(Amazon Simple Storage Service)とは、オブジェクトスト[…]