
2026/06/23 18:39
マイクロ VM:完全ライフサイクル制御可能な隔離型サンドボックスを実行する
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Amazon Web Services(AWS)は、ユーザー生成または AI 生成のコードの隔離されたステートフルな実行を目的とした新しいサーバーレス計算基盤である Lambda MicroVMs を AWS Lambda 内に導入しました。Firecracker という軽量のハイパーバイザー(同技術を用いて現在月間 15 兆回以上の Lambda インボケーションを実現済み)により動作する MicroVMs は、共有されたカーネルのリスクを排除した VM レベルの隔離を提供し、従来の仮想マシン(起動に数分かかる)、コンテナ(カーネルを共有するため強化が必要)、標準的な Function-as-a-Service モデル(長時間実行される対話型セッション向けに設計されていない)の限界に対処します。各 MicroVM は、単一のエンドユーザーまたはセッションごとに独自の隔離環境を提供し、メモリとディスク状態を保持でき、ほぼ即座に起動可能であり、サスペンションからの再開も低コストでのアイドル時でもサポートされます。この機能により、AI コーディングアシスタント、ゲームサーバー、対話型コード環境、データ分析プラットフォーム、ユーザー提供のスクリプトを実行する脆弱性スキャンなど、複雑なマルチテナントワークロードが、基盤インフラを管理せずに実行可能になります。インスタンスは CLI または AWS コンソールを使用して作成でき、画像アビタクト(例:Dockerfile を含むコードを含む zip ファイル)に基づいたイメージ(例:
public.ecr.aws/lambda/microvms:al2023-minimal)を用いて指定します。ユーザーはアイドルポリシーを設定して、不活性期間後(例:900 秒)に MicroVM をサスペンドし、トラフィックが戻った際(例:300 秒後)に迅速に再開することができ、クライアント側での一時停止の認識なく完全な継続性を確保します。各 MicroVM は最大 8 時間の合計実行時間をサポートし、構成可能な自動サスペンド動作、そして最大 16 vCPUs、32 GB メモリ、32 GB ディスクの予約されたサイズを提供します。本サービスは今日現在、US East(バージニア北部とオハイオ)、US West(オーガネット)、Europe(アイルランド)、Asia Pacific(東京)リージョンで ARM64 アーキテクチャ上で利用可能であり、スケーラビリティ、セキュリティ、ステートフルな実行を統合した現代のクラウドアプリケーションのために設計されています。本文
AWS Lambda MicroVMs:発表と入門ガイド
本日、AWS Lambda 内で展開される新たなサーバーレスコンピューティング基盤「AWS Lambda MicroVMs」が正式に利用可能になりました。本機能は、ユーザー作成のコードや AI が生成したコードを、安全な分離された実行環境で動作させることを目的としています。
- 仮想マシン (VM) 同等の隔離性 を確保しつつ、ほぼ瞬時の起動・再起動を実現します。
- エンバクチャの管理や複雑なバーチャライゼーション技術に関する専門知識が不要です。
- AWS Lambda の基盤となっている軽量バーチャライゼーション技術である Firecracker を採用しており、大規模運用の成熟度をそのまま継承できます。
なぜこの機能が必要なのか?
近年出現した「複数テナントを共有するアプリケーション」には、「開発者が記述したコード」を安全に実行するという共通要件があります。AI コーディングアシスタント、インタラクティブなコード環境、データ分析プラットフォーム、脆弱性スキャナ、ゲートサーバーなど、これらすべてのパターンがこの要件を満たす必要があります。
現状では以下の技術的課題が存在します。
- 仮想マシン (VM):強力な隔離性を提供しますが、起動に数分かかります。
- コンテナ:数秒で起動しますが、共有カーネルのリスクから安全な実行には多大な独自対策が必要です。
- 関数型サービス (FaaS):イベント駆動型のワークロードには適していますが、環境状態を維持する必要がある長期インタラクティブセッションには不向きです。
従来では、開発者は性能と隔離性の妥協を迫られるか、高性能かつ隔離された実行を実現するために大規模なリソースを投入して独自インフラを構築する必要がありましたが、Lambda MicroVMs はこのギャップを埋めるために特化して設計されました。
Lambda MicroVMs の特徴
- 各 MicroVM はエンドユーザーまたはセッションごとに独自の隔離実行環境を提供します。
- 極めて高速な起動・再起動が可能です。
- セッション中盤までメモリとディスクの状態を保持でき、離席時は低コストで一時停止(サスペンド)可能です。
- Firecracker 技術を採用しているため、大規模運用に関するセキュリティや安定性の恩恵を受けられます。
実際に試してみましょう (入門ガイド)
まずは AWS Lambda コンソールから「Lambda MicroVMs」へのナビゲーションを進めます。ここでは Flask ウェブアプリを MicroVM で動作させる手順を紹介します。
1. アプリケーションの準備
Flask アプリと Dockerfile を ZIP ファイルとして用意し、Amazon S3 バケットにアップロードします。
(Flask API)app.py
import logging from flask import Flask, jsonify app = Flask(__name__) logging.basicConfig(level=logging.INFO) @app.route("/") def hello(): app.logger.info("Received request to hello world endpoint") return jsonify(message="Hello, World!") if __name__ == "__main__": app.run(host="0.0.0.0", port=5000)
Dockerfile
FROM public.ecr.aws/lambda/microvms:al2023-minimal RUN dnf install -y python3 python3-pip && dnf clean all WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY app.py . EXPOSE 5000 CMD ["gunicorn", "--bind", "0.0.0.0:5000", "app:app"]
2. MicroVM イメージの作成
AWS CLI を使用して、S3 にアップロードしたアーティファクトから MicroVM イメージを作成します。
aws lambda-microvms create-microvm-image \ --code-artifact uri=<path/to/s3/artifact.zip> \ --name <VM_image_name> \ --base-image-arn arn:aws:lambda:us-east-1:aws:microvm-image:al2023-1 \ --build-role-arn <IAM role ARN>
【処理の流れ】
- AWS コンソールまたは CLI でコマンドを実行します。
- Lambda は ZIP ファイルを取得し、Dockerfile を実行してアプリケーションを初期化します。
- 動作中のディスクとメモリの状態に対して Firecracker スナップショット を取得します。
- ビルドログはリアルタイムで Amazon CloudWatch にストリーミングされます。
- イメージ準備完了後、コンソールに ARN とバージョン番号が表示されます。
3. MicroVM の実行
作成したイメージを起動するためのコマンドです。
aws lambda-microvms run-microvm \ --image-identifier arn:aws:lambda:<region>:<acct>:microvm-image:my-image \ --execution-role-arn arn:aws:iam::<acct>:role/MicroVMExecutionRole \ --idle-policy '{"maxIdleDurationSeconds":900,"suspendedDurationSeconds":300,"autoResumeEnabled":true}'
【実働のポイント】
- アイドルポリシーの指定: 不活性状態が 15 分(900 秒)継続すると自動でサスペンドし、再度リクエストがあった瞬間に自動的に再開する構成にします。
- ネットワーク設定: 追加の設定は不要です。Lambda が MicroVM に一意の ID を割り当て、専用エンドポイント URL を返します。
- 冷起動なし: フルスタックでの初期化(コード読み込み、ネットワーク接続確立など)はスナップショット時点で完了しているため、即座に動作する環境を取得できます。
【サスペンド・再開の実証】
- クライアントから API キール付きの認証ヘッダー (
) を付与した HTTPS リクエストを送信し、Flask アプリが反応するか確認します。X-aws-proxy-auth - MicroVM をアイドル状態(サスペンド閾値以上)に放置します。メモリの状態やディスク内容が保存されながらスリープします。
- 再度リクエストを送信すると、前回のセッションでのアプリケーション状態を完全に保持したまま再開されることが確認できます。クライアントからは「停止」の挙動は感じられません。
仕組みについて:Lambda MicroVMs の内部構造
Lambda MicroVMs は、単一サービスとして提供していなかった 3 つの機能を組み合わせています。
-
仮想マシンレベルの隔離性
- Firecracker 技術により、各セッションが独自の専用 MicroVM で動作します。
- 共有カーネルや共有リソースがないため、信頼できないコードも安全に実行できます。
- 他の環境や基盤システムへの不正なアクセスは不可能です。
-
高速な起動と再起動
- 「イメージを作成して起動」という方式を採用しています。
- Dockerfile とコードを S3 アートファクトとして提供し、MicroVM イメージとしてビルドします。
- Lambda はアプリケーションを初期化し、動作環境のメモリ・ディスク状態のスナップショットを取得します。
- 以降のスナップショットからの起動(ホットスタート)により、起動遅延をほぼゼロに抑えられます。
-
状態保持型の実行
- セッション間を通じてメモリ、ディスク、プロセスの状態を保持できます。
- アイドル期間中は状態を保ったままサスペンドでき、トラフィックが来れば即座に再開されます。
- インストール済みパッケージや読み込まれたモデルなどは、セッション再開直後に利用可能です。
- 最大 8 時間の総実行時間をサポートし、設定可能なアイドル期間後は自動サスペンドします。
Lambda MicroVMs と Lambda Function の違い
- Lambda Function: イベント駆動型の「リクエスト・レスポンス」ワークロードに最適です。
- Lambda MicroVMs: マルチテナント向けで、ユーザー作成コードや AI コードの実行環境を提供します。
両者は互いを補完します。イベント駆動の中核には Lambda Function を使いつつ、不信されるコードを隔離して実行する必要があるステップについては Lambda MicroVMs を呼び出せば対応可能です。
本日より利用可能
以下のリージョンで正式にサービス開始となりました。
| 項目 | 詳細 |
|---|---|
| リージョン | US East (バージニア北部), US East (オハイオ), US West (オレゴン), Europe (アイルランド), アジア太平洋 (東京) |
| アーキテクチャ | ARM64 |
| リソース構成(1 MicroVM 当たり) | 最大 16 vCPU、32 GB メモリ、32 GB ディスク |
コスト削減を実現するサスペンド機能
- API クールを通じて明示的にサスペンドすることも可能です。
- ライフサイクルポリシーを有効にすることで、自動的にスリープ動作を行います。
- 全状態(メモリ・ディスク)を保持したまま高速再開が可能であり、稼働コストを大幅に抑制できます。
詳しくは AWS Lambda 料金ページ および [Lambda MicroVMs デベロッパーガイド](https://docs.aws.amazon.com/ja_JP/lambda-microvms/latest/dg/welcome.html) をご参照ください。