👉 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 リダイレクトは、ウェブアプリケーションの開発やメンテナンスにおいて重要な機能です。今回紹介した実装方法を参考にして、自分のユースケースに合わせたリダイレクト処理を構築してみてください。
最後までお読みいただきありがとうございました。他に質問があれば気軽に聞いてくださいね。