👉 1. はじめに
URL リダイレクトは、ウェブアプリケーションにおいて頻繁に行われる処理の1つです。リソースの移動や、古い URL からの切り替えなど、様々な理由でリダイレクトが必要になります。
今回は、Lambda@Edge と CloudFront を使ってリダイレクトを実現する方法について解説します。正規表現を使ったパターンマッチングなど、柔軟な実装方法も紹介しますので、ぜひ参考にしてみてください。
👉 2 AWS Lambda@Edge での URL リダイレクト
Lambda@Edge を使えば、CloudFront 上でリダイレクト処理を行うことができます。以下のようなコードを Lambda@Edge 関数として実装します。
import re # リダイレクト先の URL パターン redirect_patterns = [ (r'^/css/base\.css$', 'https://hogehoge.com/fugal/css/base.css'), (r'^/css/categories/categories\.css$', 'https://hogehoge.com/fugal/css/categories/categories.css'), (r'^/css/products/products\.css$', 'https://hogehoge.com/fugal/css/products/products.css'), ] def lambda_handler(event, context): request = event['Records'][0]['cf']['request'] request_path = request['uri'] # パターンにマッチするかチェック for pattern, redirect_url in redirect_patterns: if re.match(pattern, request_path): break else: # マッチしない場合は元のリクエストを返す return request # リダイレクトレスポンス response = { 'status': '301', 'statusDescription': 'MovedPermanently', 'headers': { 'location': [{ 'key': 'Location', 'value': redirect_url }] } } return response
この Lambda@Edge 関数では、CloudFront からのリクエストオブジェクトを処理しています。redirect_patterns
に定義されたパターンとマッチングし、マッチした場合はステータスコード 301 とリダイレクト先の URL を含むレスポンスオブジェクトを返します。
この Lambda@Edge 関数を CloudFront に関連付けることで、CloudFront 上でURLリダイレクトが行われるようになります。
👉 3. まとめ
Python では URL リダイレクトを簡単に実装できます。Lambda@Edge を使えば、クラウド上でリダイレクトサービスを提供できます。
正規表現を使ったパターンマッチングにより、柔軟なリダイレクト処理が可能になります。また、AWS Lambda@Edge と CloudFront を組み合わせることで、グローバルなコンテンツ配信ネットワーク上でリダイレクトを実現できます。
URL リダイレクトは、ウェブアプリケーションの開発やメンテナンスにおいて重要な機能です。今回紹介した実装方法を参考にして、自分のユースケースに合わせたリダイレクト処理を構築してみてください。
最後までお読みいただきありがとうございました。他に質問があれば気軽に聞いてくださいね。