Azure Front Door Edge Actions を試してみる

数年前からBuildなどで話題にはでてたEdge Actionsが遂にPublic Previewになりました。
Edge ActionsはAzure Front Doorのようなエッジ上でユーザーコードを実行するための仕組みです。Hyperlightを使ったMicroVMがエッジ上で実行されます。といってもエッジコンピューティングというよりはFront Doorのルールセット内のアクションでコードで自由に処理できる、という感じです。なので全体の構成としてはあくまでFront DoorでEdge Actionsはその中のごくごく一部を担います。エッジ上でサーバーサイドアプリが動く!みたいなイメージでは現状ないので注意。

Hyperlightの話とかは過去Postを見てもらえると。

というわけで簡単に触ってみたいと思います。
今時点だと特殊なリンク経由でEdge Actionsのブレードを有効化すれば作れるようになります。

上記リンク経由で開いたAzureポータル上で Edge Actions を検索するとEdge Actionsのページが開くのでここから作成や管理を行えます。

image
image
image

できました。

image

ARMはこんなかんじ。

{
     "apiVersion": "2025-12-01-preview",
     "id": "/subscriptions/___/resourceGroups/___/providers/Microsoft.Cdn/EdgeActions/edgeactiontest01",
     "name": "edgeactiontest01",
     "type": "microsoft.cdn/edgeactions",
     "sku": {
         "name": "Standard",
         "tier": "Standard"
     },
     "location": "global",
     "tags": {},
     "properties": {
         "provisioningState": "Succeeded",
         "attachments": []
     }
 }

Edge Actionsはバージョンという単位で管理されるので、Settings → Versions から新しいバージョンを作ります。1つのバージョンに1つのコードのセットという感じですね。(いわゆるバージョン番号とは違うので注意)

とりあえずわかりやすそうな?URLリライトしてみましょう。サンプルにあるurl-rewriteのedge_action.js ファイルをアップロードして新しいバージョンとして登録します。

image
登録されました。(Preview中?はProvisioningに数十分ほど時間がかかる場合があるみたいなので注意。Edge Actionsそのものはグローバルに展開される(Edgeノード上で動作するので)から時間がかかるのかな?)
image

次は作ったバージョンをSettings → Attachments でFront Doorと紐づけます。Associate Routeをすると新しいルールセットが指定したルートに作られて割り当てられます。なお現状は呼び出しポイント(Invocation Point)はクライアントリクエストのみです。Front DoorのWAFなどの処理がされた後でEdge Actionが呼ばれてその後バックエンド(Origin)にリクエストが流れます。
なおFront DoorプロファイルはStandard SKUでもOKです。

image
image
image

Front Door側でルールセットが既にある場合でもEdge Actionから作ったバージョンを割り当てることができます。
image

アクションに要した時間やCPU時間もメトリクスで見ることができます。
image
他には特定ヘッダーと値の場合は実行するバージョンを上書き指定できる機能とかもあります。
診断ログではJavaScript内で出力したコンソールログやサービスログを収集する設定ができます。
image

コンソールログは EdgeActionConsoleLog テーブルに出力されます。Front Door側の診断ログもカテゴリ FrontDoorAccessLogで実行されたかどうかのログがでます。

image
image

Front DoorのほうはEdge Actionsのステータスコード(edgeActionsStatusCode)が見れます。基本的に200で終わるはずなので200以外(503とか)出るとEdge Actionsでエラーになってるという感じです。
image

EdgeActionsAgentTypeとかみると今後node以外にも対応してくれるんだろうなぁという期待が持てます。
ただ現状はコードサイズ 16KB、バージョン数は3つまで、実行時間は 最大10msみたいな制限があります。
※実行時間が超過すると無視されてリクエストが送信されるようです。

コードの開発について

現状はサンプル EdgeActionsSamples/src/edgeactions-js at main · Azure/EdgeActionsSamples を読み解くしかないです。
handler関数だけ公開してるJSがあればとりあえずよさそう。
動作テスト用のDocker Containerイメージがあったりするみたいですけど、まだ見れないぽい?(mcrでHitしない)
Asset見る限りVisual Studio Codeの拡張からデプロイしたりできそうではある。

まとめ

現状ではコード部分もAzureポータル側もまだまだこなれていない感はありますが、Edge上でコードが動く魅力は試せそう。Edge Actionsの実行はHyperlightでめちゃ速いかもしれないけどFront Door関連の構成がめちゃめちゃ時間かかるのでなかなか、、、改善されるとイイナァ。

コメントを残す