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; }