💭

Lambda@Edgeでquery stringを利用する際の注意点

2021/02/22に公開

環境にもよりますが、誰かが作った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);
  ...
}

https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/lambda-examples.html#lambda-examples-query-string-examples

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