💭
Lambda@Edgeでquery stringを利用する際の注意点
環境にもよりますが、誰かが作ったCloud FrontにLambda@Edgeを設定して、クエリ文字列をごにょごにょする際にハマったのでメモ。既存の設定をしっかり確認すべきでした。
Lambda@Edge
ここは特に。
requestにuriとquerystringが返却されるので適宜、お好みの処理作っちゃう感じですね。
'use strict';
const querystring = require('querystring');
exports.handler = (event, context, callback) => {
const request = event.Records[0].cf.request;
const uri = request.uri
const params = querystring.parse(request.querystring);
...
}
Cloud Front
Cloudfront > Distributions > id (をクリック)
Behaviors > (チェックをして)Edit
query string forwarding and caching: None
だと、originへのリクエストはパラメータが付与されなくなる。
上記だと request.querystring
に値が入ってこない感じとなる。
(ここでハマってました...)
Forward all, cache based on whitelist
or
Forward all, cache based on all
に変更。
誰かが設定した設定はちゃんと確認するべし。
Discussion