LoginSignup
0

posted at

updated at

CloudFront Function でCookieを読み込み・書き込みする方法

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;
}       

結構簡単にできちゃいますねこれ。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0