メニューを閉じる

テクノデジタルグループ

メニューを開く

2023.03.09

インフラ

CloudFront+Lambda@EdgeでHTTPリダイレクト

【概要と経緯】

– サイトの移設を行う際に、パスの構造が変わる部分についてリダイレクトをする
– 移設後のサイトはCloudFrontでキャッシュしているため、CloudFront側でリダイレクトを行う必要がある
– 当初CloudFrontFunctionsで対応していたが、コード量10KBまでしか扱えないため、およそ100件を超えるようなに対応できない→Lambda@Edgeで実現する

【参照】

CloudFront Functionsでの方法
https://dev.classmethod.jp/articles/http-redirect-using-cloudfrontfunctions/
Lambda@Edgeでの方法
https://qiita.com/kooohei/items/7fcbc3602f7b7026b5a8
比較
https://qiita.com/hirai-11/items/c9339c88820d01fe0acb

【詳細】

1)Lambda関数の作成

※Lambda@edgeで利用する関数はバージニア北部(us-east-1)である必要があります。東京リージョンで作るとCloudFrontにアタッチする際に以下のようなエラーとなる。
The function must be in region ‘us-east-1’. ARN: arn:aws:lambda:ap-northeast-1:xxxxxxx:function:関数名
[Lambda]-[関数]-[関数の作成]

関数名
なんか適当につけて

ランタイム
Python3.9

コードに以下を張り付けて[Deploy]

2)[テスト]タブでテスト

テンプレート:CloudFron-tAccess-request-in-response

この辺書き換えてテストを実施。
問題なければバージョンを発行する

[新しいバージョンを発行]
→生成されたARNを以下の作業で利用するのでコピーしておく

3)IAMロールの修正

Lambda@Edgeを利用するためにはIAMロールの信頼関係を以下のように修正する必要があります。
[Lambda]-[関数]-[関数名]-[アクセス権限]-[実行ロール]
該当のロール-[信頼関係]を以下のように修正

4)CloudFrontにアタッチ

[CloudFront]-[ディストリビューション]-対象ID-[ビヘイビア]-[編集]

パスパターン設定の「関数の関連付け」で
ビューワーリクエスト
関数タイプ:Lambda@Edge
関数:上記で取得したARN

として
[変更を保存]

※CloudFrontのデプロイには少し時間がかかるのでお待ちください


【テクノモバイルではエンジニア/デザイナーを積極採用中です!】

下記項目に1つでも当てはまる方は是非、詳細ページへ!
  • 自分でアプリを作ってみたい
  • ITで世の中にワクワクを生み出したい
  • 使いやすさ、デザインにこだわったWebサイトを開発したい

採用情報の詳細はこちら


Qangaroo(カンガルー)

  • 徹底した見やすさと優れた操作性で、テストの「見える化」を実現。
  • テストの進捗が見える。開発がスマートに進む。
  • クラウド型テスト管理ツール『Qangaroo(カンガルー)』
https://qangaroo.jp/

最近の記事

SNS共有