目次
はじめに
こんにちはディーネットのタナミです。
以前、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制限やアクセス制御もできるため今後も活用していきたいです。
よろしくお願いします。