PCS開発チーム
PCS開発チーム
AWS Lambdaのペイロードサイズ制限でSession(databaseドライバー)への保存が失敗する例
- Laravel 11.x
-
SESSION_DRIVER=database
- VaporやVercelなどのLambda環境
- データベースはRDS
なにかのクラスをそのままセッションに保存しようとすると
$large_object = new LargeObject();
session()->put('test', $large_object);
return redirect('/');
書き込みできてなくて読み出せない。
// 別のルート
dump(session()->get('test'));
// null
「EC2では発生しない」「VaporでもVercelでも同じく発生」なので原因はLambdaと予想。
そんなに大きなクラスではないはずだけど保存時にserialize()
とbase64_encode()
してるので想定より大きくなってるのかも。
Lambdaだとこれ以上調査しにくいのでLambdaからデータベースへの書き込みで失敗していることだけ確定できればいい。
対策
配列で保存すれば成功する。
session()->put('test', []);