AWSで使えるCDNのCloudFrontで、Edge側で処理を書くために使える機能がCloudFront Functionsです。
従来から使えるLambda@Edgeに比べて低機能で制約が多いですが、無料利用枠があることやコストが安いので、できればこっちで書いたほうがお得です。
CloudFront Functions の導入 – 任意の規模において低レイテンシーでコードをエッジで実行 | Amazon Web Services ブログ
ということで、実際にCloudFront Functionsでどこまでやれるのかも知りたかったので、Cookieを読み書きすることぐらいならできるだろうと思って調べてみました。
Cookieを読み込む
function handler(event) {
var response = event.response;
var request = event.request;
// event.request.cookies 配下に当リクエスト時に読み取れたCookie情報は含まれる。
// event.request.cookies['キー名'].value で値が取得可能
return response;
}
Cookieを書き込む
function handler(event) {
// Cookie をセットする時に必要な有効期限文字列情報を生成(サンプルでは365日間を期限とするCookieにする)
var e = new Date();
e.setDate(e.getDate() + 365);
var response = event.response;
// event.response.cookies 配下にキー名のノードを作れば設定可能
// サンプルとしてmanjiro.netで動かしたとした場合のDomain設定を記載。
if(!('hoge' in event.response.cookies)){
event.response.cookies['hoge'] = {
'value': 'fuga',
'attributes': 'Secure; Domain=.manjiro.net; Path=/; SameSite=none; Expires='+ e.toUTCString()
};
}
return response;
}
結構簡単にできちゃいますねこれ。