個人的にBrefをめっちゃ使っているよ〜んです。

2026年2月に Bref 3.0 がリリースされていました。

先日 Bref と FrankenPHP を比較する記事 を書いているときに気づいたんですが、心の奥底から待っていました…!!!

何が嬉しいかって、Amazon Linux 2 の EOS に間に合った ことです。

AL2 の EOS は元々 2025年6月30日だったんですが、1年延長されて 2026年6月30日になりました。 延長がなかったら結構やばかったんですよね…。とはいえ延長されたおかげで Bref 3.0 が余裕を持って出てきてくれたので、助かりました。

Brefとは

先日の記事から引っ張ってきています

Bref は PHP を AWS Lambda で動かすためのオープンソースツール。Composer パッケージとして提供されていて、Lambda 用の PHP ランタイムを Lambda Layer として配布しています。

  • AWS Lambda 上で PHP を実行するカスタムランタイム
  • serverless CLIやAWS CDK、AWS SAMでデプロイ
  • Laravel / Symfony との統合あり
  • SQS、EventBridge などの AWS サービスとネイティブ連携
flowchart TB

subgraph Bref["Bref (AWS Lambda)"]

direction LR

B1[API Gateway / ALB] --> B2[Lambda]

B2 --> B3[PHP Runtime<br> Lambda Layer]

B3 --> B4[Laravel / Symfony]

end

Bref 3.0 で何が変わったのか

変更点の全体像は 公式のリリースノート を見てもらうのが早いですが、ざっくりまとめるとこんな感じです。

  • AL2023 ベースに移行
    • Bref 3.0 にアップグレードするだけで自動的に AL2023 になる
  • レイヤーサイズ 24% 削減
    • コールドスタートがtちょっと改善される
  • PHP 8.5 に対応
  • Redis 拡張がビルトイン
  • PostgreSQL PDO がデフォルト有効
  • CloudWatch ログの改善
    • →これが個人的に嬉しい

詳細やアップグレード手順は v3 アップグレードガイド を参照してください。

CloudWatch ログが見やすくなった

個人的に一番嬉しかったのがこれです。

Monolog フォーマッターがデフォルト有効になって、ログが構造がJSONで出力されるようになりました。

これだけだと「ふ〜ん」って感じかもしれないですが、一番ありがたいのは 例外のスタックトレースが1つの JSON オブジェクトにまとまる ところです。

実際に個人的に使ってるホームシステムのBrefのバージョンをアップグレードしてみました。

Before(v2)

[2026-05-07 01:15:30] production.INFO: GET / 200 1054ms

After(v3)

INFO GET / 200 1105ms
{
	"message": "GET / 200 1105ms",
	"level": "INFO"
}

今まで CloudWatch でスタックトレースを見ようとすると、1行ごとに別のログレコードに分かれてて、めちゃくちゃ追いづらかったんですよね…。CloudWatch Logs Insights でフィルタリングするときも、ログレベルや例外クラスで絞れるようになるので、運用がだいぶ楽になりそうです。

まとめ

元々のAL2のEOSが1年延長されなかったら、Bref 2.x のまま AL2 がEOSになるところだったので、正直ヒヤヒヤしていました。結果的にちゃんと間に合ってくれたので、あとは composer update してデプロイするだけですね。

ベースイメージのアップグレード以外にもCloudWatch ログの改善など嬉しい機能追加がありました。

開発者の皆様に感謝です🙏

EOS前にサクッとアップグレードしていきましょう、ではでは〜