GRAPH

ノードをドラッグ · ホイールでズーム · 背景をドラッグして移動

グラフを読み込んでいます

← 記事一覧へ

Lambda MicroVMs についての調査

AWS Lambda の MicroVMs が、これまでの Lambda・コンテナ・仮想マシンと何が違うのかを整理する。

Read this article in English

はじめに

AWS Lambda に 2026-06-22、新しく MicroVMs という実行単位が加わりました(出典: AWS What’s New、2026-08-24 確認)。 名前に Lambda が付いていますが、これまでの Lambda と何が異なるのかを調査します。

この記事では、MicroVMs がこれまでの Lambda やコンテナ、仮想マシンと何が違うのかを整理します。

Lambdaを支える技術について

Lambdaに求められた機能

Lambda は、他人同士のコードを1台の物理サーバーに大量に相乗りさせて動かすサービスです。関数は数百ミリ秒で終わることも多いため、実行環境の起動に数秒もかけられませんし、同じサーバーに多数の他の利用者と同居しているため互いに隔離されている必要もあります。

(出典: NSDI ’20 論文、2026-08-24 確認)

MicroVMについて

この要求を満たすには、必要最低限の機能だけを備えた小さな仮想マシン(MicroVM)が要ります。

仮想マシンを作るには、Linux カーネルに標準搭載されている仮想化機能(ハイパーバイザー)の KVM(Kernel-based Virtual Machine)と、KVM を操作して仮想マシンを組み立てる仮想マシンモニタ(VMM)の2つが必要です。当時、VMM の定番は QEMU でした。

ただし QEMU は、本物の PC を丸ごと再現した仮想マシンを作る VMM だったため、求めている小さな仮想マシンは作れませんでした。そのため AWS は Google の OSS「crosvm」をベースに、小さな仮想マシンだけを作る VMM である Firecracker を OSS として自社開発しました。Firecracker が作る仮想マシンを MicroVM と呼びます。Lambda は、この Firecracker が作る MicroVM の中で利用者のコードを動かしています。

(出典: NSDI ’20 論文、2026-08-24 確認)

QEMU と Firecracker の比較

1台に詰められる数・起動時間・利用できる機能の3点で QEMU と比べると、次のようになります。

仮想マシンにおける境界について

実行環境を隔離する方法には、仮想マシンのほかにコンテナもあります。コンテナは軽くて速い代わりに、同じサーバーにいる全員がホストのカーネルを1つ共有します。そのため、カーネルに脆弱性が1つあると、同居する他の利用者に影響を及ぼす可能性があります。

一方、仮想マシンは1台ずつ自分のゲストカーネルを持ちます。MicroVM も仮想マシンなので同じです。カーネルの脆弱性があっても、同居する他のテナントとの境界を越えることはありません。

ここで 仮想マシン・コンテナ・MicroVM で、それぞれがどういった境界になっているかを比較してみました。

(出典: Firecracker 公式サイト および NSDI ’20 論文、2026-08-24 確認)

↓ = 外からの攻撃。侵入したアプリの中からカーネルの穴を突く
仮想マシン(EC2 など)
起動: 数分
アプリ
フル OS
カーネル
アプリ
フル OS
カーネル
アプリ
フル OS
カーネル
物理サーバー
境界の中で止まる
フル OS を積むぶん、1台が重い
コンテナ
起動: 数秒
アプリ
アプリ
アプリ
ホストのカーネル(全員で共有)
物理サーバー
共有カーネル経由で全員に届く
軽いが、カーネルは全員で共有
MicroVM(Firecracker)
起動: 数秒
アプリ
カーネル
アプリ
カーネル
アプリ
カーネル
物理サーバー
境界の中で止まる
OS を最小まで削った VM。軽さと隔離を両取り

Lambda 関数 と MicroVMs の違い

それぞれの比較

ここまで記載したように、Firecracker は以前から Lambda を支える技術の一つであり、従来のコードに関しても実行環境ごとに MicroVM が利用されています。

どういった違いがあるのか、Lambda 関数と Lambda MicroVMs の2つを比較してみました。

Lambda関数 と Lambda MicroVMsの比較表

観点 Lambda 関数 Lambda MicroVMs
実行モデル イベント駆動でハンドラを呼ぶ 専用 HTTPS エンドポイントで常駐アプリに接続
状態 原則ステートレス メモリ・ディスク・プロセスをセッション中保持
ライフサイクル Lambda が管理 開発者が run / suspend / resume / terminate
最大実行時間 15分 8時間(合計)
課金単位 GB 秒 + リクエスト数、ミリ秒課金 vCPU 秒 + GB 秒の秒課金 + スナップショット + データ転送
OS 権限 制限的(疑似端末 pty なし) フル OS 機能

(出典: Lambda MicroVMs デベロッパーガイド、2026-08-24 確認、2026-06-22 一般提供時点の仕様)

開発者が管理できる範囲の違い

併せて、開発者がどの層まで触れるか(どこから先が AWS の管理か)を、オンプレミス・EC2・これまでの Lambda 関数・MicroVMs の4つで比べた図を掲載します。

あなたのコード
OS・ファイルシステム
仮想化基盤(Firecracker)
物理サーバー
AWS が管理 — 見えない・触れない
物理サーバーまで触れる(全部自分のもの。管理も全部自分)
OS まで触れる(SSH・パッケージ・ファイル)
コードだけ触れる(下の層は全部 AWS におまかせ)
Firecracker まで触れる — 仮想マシンの起動から削除までを自分で操作できる:
run(起動)
suspend(一時停止)
resume(再開)
terminate(削除)

(出典: 同上)

4つの操作について

MicroVMs では、Firecracker が作る仮想マシンである MicroVM に対して、run / suspend / resume / terminate の4つの操作を利用者が直接実行できます。

run と terminate を呼ぶのは、MicroVMs を組み込む開発者のアプリ(バックエンド)です。suspend と resume は、run のときにアイドルポリシー(無通信が何秒続いたら止める、通信が来たら再開する)を渡しておけば Lambda が自動で行います。API で明示的に呼ぶこともできます(出典: Running and using MicroVMs「Idle policy configuration」、2026-09-05 確認)。

MicroVM の状態遷移図

4つの操作で MicroVM の状態がどう移るかを図にしました。

状態: PENDING(準備中)

コンピュート課金: なし

4つのAPIについて

それぞれの操作は次のとおりです。

操作(CLI 名) 概要
run(run-microvm) イメージのスナップショットから MicroVM を起動し、一意の ID と専用の HTTPS エンドポイントを割り当てる
suspend(suspend-microvm) メモリとディスクの状態を保持したまま一時停止する。停止中はコンピュート課金が発生しない。アイドル時間の超過で自動でも起きる
resume(resume-microvm) 一時停止した MicroVM を状態そのままに再開する。トラフィック到着時の自動再開も設定できる
terminate(terminate-microvm) MicroVM を終了して全リソースを解放する。終了後は再開できない。最大実行時間の超過で自動でも起きる

(出典: Running and using MicroVMs、2026-09-03 確認)

4つの操作を支える仕掛け: スナップショット

この4つの操作が成り立つ土台は、MicroVM の中身(メモリとディスク)を丸ごと保存して戻せる仕組みです。イメージを作る時点で、アプリを起動した直後の状態を Firecracker のスナップショットとして保存しておくので、run はそれを復元するだけで済み、依存関係の読み込みをやり直しません。suspend はその時点のメモリとディスクを保存して止め、resume はそこから戻します。

保持できる範囲には上限があります。1台の MicroVM が RUNNING と SUSPENDED でいられるのは合計で最長8時間、メモリは基準 0.5〜8 GB(ピーク時はその4倍、最大 32 GB / 16 vCPU)、ディスクは最大 32 GB です(出典: コアコンセプト、MicroVM images「MicroVM sizing」、Running and using MicroVMs「Key parameters」、2026-09-04 確認)。

フックについて

4つの操作に加えて、フックも用意されています。

フックは利用者が呼ぶものではなく、起動・一時停止・再開・終了の各タイミングと、ビルド時の ready / validate のタイミングで、Lambda が利用者のアプリを HTTP で呼び出すことが可能となる仕組みです。アプリ側で設定をしておくと、そのタイミングに独自の処理を差し込むことが可能となります。

フック いつ呼ばれるか 用途
/ready(ビルド時) アプリ起動後 初期化完了を知らせ、スナップショットを撮らせる
/validate(ビルド時) ビルド完了後の検証起動時 再開後に正しく動くか検証する
/run 起動直後 テナントごとの初期化、一意な値の生成
/suspend 一時停止の直前 書き込みの flush、接続のクローズ
/resume 再開の直前 接続の張り直し、認証情報の更新
/terminate 終了の直前 データの flush、後片付け

(出典: Running and using MicroVMs および MicroVM images、2026-09-03 確認)

具体的な使いどころ

具体的な使いどころとしては、ブラウザ IDE やノートブックなどの開発プラットフォーム、データ分析基盤、AI コーディングエージェント、セキュリティスキャナ、CI/CD などが挙げられています(出典: AWS Compute Blog、2026-09-05 確認)。

ここでは AI コーディングエージェントの例を取り上げ、利用者が依頼から片付けるまでの一連の流れを追っていきます。

AI コーディングエージェントでのフローについて

MicroVM: なし

コンピュート課金: なし

1. 依頼
裏で動いたこと
利用者がフロント画面で「テストを書いて実行して」と依頼する。バックエンド(あなたのアプリ)が依頼を受け取る。MicroVM はまだ無い。
利用者にはこう見える
送信ボタンを押して、返事を待っている。
1 / 8

他のサービスとの違い

利用者ごとに専用の実行環境を配ることは、勿論これまでも EC2・コンテナ・Lambda 関数では可能でした。ただし、それぞれが得意としている範囲があり、要求に対してどれを利用するかといった判断が必要となります。

ここでは各方式ごとに、どういった要求を満たせるのか図を用意しました。方式を切り替えることで、それぞれの強みや弱みを見ることができます。

強い隔離速い起動状態の保持制約の少なさ

従来の Lambda: 隔離は強いが、15分・ステートレスで状態を持てず、縛りも多い

改めて、上記の観点を記載すると以下のようになります。

選択肢 隔離 起動 状態の保持 制約の少なさ
EC2 などの仮想マシン 強い(ハードウェア仮想化) 数分(AMI ブートと初期化) 保持できる 高い(時間・スペック・OS を選べる)
コンテナ ホストカーネルを共有 数秒 保持できる 高い
Lambda 関数 Firecracker(ただし隠蔽) コールドスタートあり 15分・ステートレス 低い(15分・イベント駆動)
MicroVMs 強い(Firecracker を開放) スナップショットから復元 8時間まで保持 低い(8時間・ARM64・メモリ上限)

(出典: AWS News Blog、Lambda MicroVMs デベロッパーガイド、2026-09-05 確認)

まとめ

今回は、AWS Lambda に新しく加わった MicroVMs について、これまでの Lambda と何が異なるのかを調査しました。

リリースのきっかけとしては、AIの普及があるかと思います。 MicroVM を利用して、AI エージェントが作成するコードの実行環境を構築します。その際、実行者ごとに隔離された環境、会話をしながら合間は停止できる、実行を依頼したら実行前の状態は残しつつ続きを始めるといった使い方の理想は MicroVMs といった選択肢として一番のような気がします。

Firecracker が作る MicroVM は、以前から Lambda を支えてきた技術ですが、個人的に一番大きいと思ったのは、これまで AWS が責任範囲としていた Lambda の実行環境そのものを、開発者が run と terminate などで自分の手で扱えるようにしたところだと思っています。

AWS Lambda に新しく加わった MicroVMs についてですが、機能の追加というより AWS と開発者の責任範囲を新たに引き直したものだと感じました。

← 記事一覧へ