Amazon-CloudFront

【お手軽】CloudFront Functionsを使ってリダイレクトを設定しよう

はじめに

こんにちはディーネットのタナミです。

以前、CloudFront Functionsを使ってリダイレクトの設定を行う機会がありましたので、
備忘録として記事に残そうと思います。

CloudFront Functionsを作成しよう

CloudFront FunctionsはCloudFront内の「関数」のページにあります。
「関数を作成」を選択し、CloudFront Functionsを作成しましょう。

今回はcloudfront-js-2.0を使ってCloudFront Functionsを作成します。

リダイレクト動作を設定しよう

今回はサイトへ来たアクセスを特定のURLへリダイレクトさせる設定を行いました。
また、リダイレクト先となるURLへのアクセスはリダイレクトさせないように設定しないと、無限にリダイレクトされるため注意が必要です。

async function handler(event) {
    var request = event.request;
    var uri = request.uri;
    var host = request.headers.host.value;

    // 特定のURLへのアクセスはリダイレクトしない
    if (uri === '/maintenance.html') {
        return request;
    }

    // 特定のURLへのリダイレクト
    var response = {
        statusCode: 302,
        statusDescription: 'Found',
        headers: {
            "location": { 
                "value": `https://${host}/maintenance.html` 
            }
        }
    };

    return response;
}

テストしてみよう

無事CloudFront Functionsを作成できたので、、「テスト」タブからテストしてみましょう。
Hostヘッダーを参照しリダイレクトさせているので、Hostヘッダーも忘れずに設定しましょう。

下図のような結果が帰ってくれば成功です。

デプロイしよう

「発行」タブから「関数を発行」を選択し、「関連付けを追加」から紐づけたいCloudFrontを選びもう一度「関数を発行」を押すことで、デプロイできます。

まとめ

いかがでしたでしょうか。
CloudFront Functionsでリダイレクトを設定できる最大のメリットは、手軽に試せる点だと思います。
単純なリダイレクトだけでなく、IP制限やアクセス制御もできるため今後も活用していきたいです。

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA