<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Lambda@edge on よ〜んの雑記</title><link>https://mu7889yoon.github.io/tags/lambda@edge/</link><description>Recent content in Lambda@edge on よ〜んの雑記</description><generator>Hugo</generator><language>ja-jp</language><lastBuildDate>Wed, 17 Jun 2026 02:20:42 +0900</lastBuildDate><atom:link href="https://mu7889yoon.github.io/tags/lambda@edge/index.xml" rel="self" type="application/rss+xml"/><item><title>Lambda@EdgeでPHPを動かす</title><link>https://mu7889yoon.github.io/posts/lambda-edge-php-wasm/</link><pubDate>Wed, 17 Jun 2026 02:20:42 +0900</pubDate><guid>https://mu7889yoon.github.io/posts/lambda-edge-php-wasm/</guid><description>&lt;p&gt;よ〜んです。&lt;/p&gt;
&lt;p&gt;以前 &lt;a href="https://mu7889yoon.github.io/posts/bref-vs-frankenphp/"&gt;Bref vs FrankenPHP&lt;/a&gt; という記事を書きまして、そのまとめで「Lambda@Edge で無理やり PHP を動かしてみよかな」と言っていたので、今回はその内容に取り組んでみます。&lt;/p&gt;
&lt;p&gt;結論から言うとちゃんと動きました。ただ正攻法では無理で、いろいろ寄り道が必要だったんですよね…。今回はその記録です。&lt;/p&gt;
&lt;p&gt;サンプルコードはこちら: &lt;a href="https://github.com/mu7889yoon/examples/tree/main/laravel-wasm-on-lambda-edge"&gt;mu7889yoon/examples - laravel-wasm-on-lambda-edge&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;当初は Laravel を Lambda@Edge で動かそうとしていたのですが、まぁ制約が重なり無理でしたw&lt;/p&gt;
&lt;h2 id="lambdaedge-とは"&gt;Lambda@Edge とは&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-at-the-edge.html"&gt;Lambda@Edge&lt;/a&gt; は、CloudFront のエッジロケーション（世界各地の PoP）で Lambda 関数を実行できるサービスです。ユーザーに物理的に近い場所でコードが動くので、レスポンスの低レイテンシ化が期待できます。&lt;/p&gt;
&lt;p&gt;CloudFront がリクエスト/レスポンスを処理する 4 つのタイミングで関数を差し込めます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Viewer Request: クライアントから CloudFront に届いた瞬間&lt;/li&gt;
&lt;li&gt;Origin Request: CloudFront がオリジンに問い合わせる直前&lt;/li&gt;
&lt;li&gt;Origin Response: オリジンから返ってきた直後&lt;/li&gt;
&lt;li&gt;Viewer Response: クライアントに返す直前&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;今回は Origin Request のタイミングで PHP を動かして、オリジンには一切触れずにレスポンスを返す「オリジンレス」な構成を組みます。&lt;/p&gt;
&lt;h2 id="どうやって-lambdaedge-で-php-を動かすのか"&gt;どうやって Lambda@Edge で PHP を動かすのか&lt;/h2&gt;
&lt;p&gt;Bref が Lambda で PHP を動かせるのは、Lambda Layer でカスタムランタイムを配れるからです。ところが Lambda@Edge には&lt;a href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-at-edge-function-restrictions.html"&gt;いくつかの制限&lt;/a&gt;があって、この手が使えません。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ランタイムは Node.js か Python のみ。カスタムランタイム不可&lt;/li&gt;
&lt;li&gt;Lambda Layer が使えない&lt;/li&gt;
&lt;li&gt;環境変数が使えない&lt;/li&gt;
&lt;li&gt;パッケージサイズ制限が普通の Lambda より厳しい&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;つまり「PHP ランタイムを持ち込む」という Bref 方式が封じられています。&lt;/p&gt;</description></item></channel></rss>