CloudFront Functionsでリダイレクト

CloudFront + S3の構成のwebサイトでリダイレクト処理をすることになりました。

S3にもリダイレクトの設定ができるようですが、今回はCloudFront Functionsを使いました。

CloudFrontにはWAFの設定などもあるので、CloudFront Functionsを使うことにより設定をより前の方に集めたかったのが、理由です。

実際に作成した関数は下記を参考にして作っています。

チュートリアル: CloudFront Functions を使用した単純な関数の作成 - Amazon CloudFront

今回は、301でのリダイレクトをしたいと思っているので、statusCode, statusDescriptionを変更し、さらにlocationを目的の場所に設定し直しました。

一見statusDescriptionは不要な気がしますが、実際には省略して、テストすると下記のエラーメッセージが表示されます。

The CloudFront function associated with the CloudFront distribution is invalid or could not run. Invalid status code desc, 

なので、301であれば、statusDescriptionに'Moved Permanently'などを設定すれば良いと思います。

コードはこんな感じです。

function handler(event) {
    var response = {
        statusCode: 301,
        statusDescription: 'Moved Permanently',
        headers: {
            'cloudfront-functions': { value: 'generated-by-CloudFront-Functions' },
            'location': { value: 'https://aws.amazon.com/cloudfront/' }
        }
    };
    return response;
}