cloud frontとLambda@Edgeを使ってリダイレクト設定入れるやりかた
配下のWebサーバーではなくcloud frontとLambda@Edgeでリダイレクトしたい
意図としては配下のEC2なりにアクセスを通してWebサーバー(nginx、Apacheなど)でリダイレクトするのではなく 上位層でリダイレクトすることでWebサーバーへ不要なアクセスをさせない良いにしておきたい。
やりかた
①リダイレクトさせたい(アクセスさせたくない)URLをcloud frontのビヘイビアに設定する
[Behaviors]タブにてCreate Behaviorを押下
[Path Pattern]に"/hoge/*"みたいな感じでドメイン以下のURLを記載する
※ほか項目はよしなに入力して保存
②Lambda関数を作る
リージョンは バージニア北部 を選択(@Edgeとして利用するため) IAMロールはアクセス権限はよしなに設定し信頼関係は下記で作成
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Effect": "Allow", "Principal": { "Service": "edgelambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
コードの内容は下記を入力し保存する
'use strict'; exports.handler = (event, context, callback) => { const response = { // 用途に応じたhttpステータスを記載する status: '308', statusDescription: 'Permanent Redirect', headers: { location: [{ key: 'Location', value: '飛ばしたい先のURLを記載', }], }, }; // リダイレクト用レスポンスを返す callback(null, response); };
新規バージョンを作成し先程設定したcloud frontに紐づけし
イベントタイプは origin-request
パスパターンに先程作成したビヘイビアの[Path Pattern]に設定したものを選択
ボディを含めるはいいえで保存します。
基本これでリダイレクト設定完了です。
ひさびさにサーバーレス関連の記事を書いてみましたw
最近コード書いてなかったですがコード書くと楽しいですね!