shiichan

AI が書いたコードもまるごと隔離!AWS Lambda MicroVMs が誕生!

みんな、しぃちゃんだよ!今日はサーバーレスの世界にどーんと新しい仲間が増えたニュースだよ。しかも「AI が書いたコードを安全に走らせたい!」っていう、今どきの悩みにばっちり効くやつなの。わくわくが止まらないから、さっそく紹介するね!

AWS Blog aws.amazon.com

なにが発表されたの?

AWS の Blog(発表告知系)から、AWS Lambda MicroVMs っていう新しいサーバーレスのコンピュート基盤が登場したよ!

これは、ユーザーが書いたコードや AI が生成したコードを、仮想マシンレベルで隔離された環境で実行できる仕組みなの。ひとつひとつの MicroVM はカーネルもリソースも他の人と共有しないから、得体の知れないコードでも安心して走らせられるんだって。

しかも中身は Firecracker っていう技術。これ、Lambda の月 15 兆回超えの呼び出しを支えてきた実績のあるやつなんだよ。すごくない?

なぜ重要なの?

これまでの Lambda は「イベントが来たらサッと動いてサッと終わる」リクエスト応答型がお得意だったよね。AWS も「そういうワークロードには今まで通り Lambda Functions がベストだよ」って言ってる。

でも最近は、AI コーディングアシスタントとか、ブラウザ上のコード実行環境みたいに、信用できないコードを、状態を保ったまま、隔離して動かしたいっていう新しいニーズが増えてきたの。こういうのを自前でやろうとすると、VM を立てて管理して…ってすごく大変だったんだよね。

MicroVMs は、そこを「インフラ管理なしのサーバーレス」で丸ごと引き受けてくれる新しい選択肢なんだよ。

これで何が変わるの?

いちばん嬉しいのは、隔離状態保持高速起動 が全部セットで手に入ること!こういう用途にぴったりなんだよ。

  • AI コーディングアシスタントや対話型のコード実行環境
  • データ分析プラットフォーム
  • 脆弱性スキャナー
  • ユーザー製スクリプトを動かすゲームサーバー

「ユーザーごとに隔離した環境がほしい」系のアプリを作る人には、めちゃくちゃ刺さると思うな。しかも MicroVM はメモリもディスクも動いてるプロセスも、セッションの間ずっと保ったままにできるから、「毎回まっさらから起動し直し」の無駄がないんだよ。

深く潜ってみよう

技術的なスペックもしっかり見ていくね!

1 つの MicroVM で使えるのは、最大 16 vCPU・メモリ 32 GB・ディスク 32 GB。アーキテクチャは ARM64 で、1 セッションあたり最大 8 時間まで動かせるよ。

面白いのが起動のしくみ。あらかじめアプリを初期化した状態の Firecracker スナップショット(ディスクとメモリの状態)を撮っておいて、そこから復元するから、起動も再開もすごく速いの。

アイドルまわりの制御もこまかくできるよ。たとえばこんな感じ。

  • maxIdleDurationSeconds: 無操作が何秒続いたら自動で一時停止するか(例では 900 秒 = 15 分)
  • suspendedDurationSeconds: 一時停止状態をどれだけ保つか
  • autoResumeEnabled: リクエストが来たら自動で再開するか

一時停止中もメモリとディスクの状態は保たれたままだから、次に来たリクエストでほぼ一瞬で復帰できるんだって。

使いはじめの流れはざっくり 3 ステップ。まず、Dockerfile とコード(S3 に置いた zip)から MicroVM イメージを作るよ。

aws lambda-microvms create-microvm-image \
  --code-artifact uri=s3://my-bucket/artifact.zip \
  --name my-sandbox-image \
  --base-image-arn arn:aws:lambda:us-east-1:aws:microvm-image:al2023-1 \
  --build-role-arn arn:aws:iam::123456789012:role/MicroVMBuildRole

Lambda が Dockerfile を実行してアプリを初期化し、スナップショットを撮ってくれる。ビルドログは CloudWatch の /aws/lambda/microvms/ 以下に流れて、完成すると ARN とバージョン番号がもらえるよ。

次に、そのイメージから MicroVM を起動するよ。

aws lambda-microvms run-microvm \
  --image-identifier arn:aws:lambda:us-east-1:123456789012:microvm-image:my-sandbox-image \
  --execution-role-arn arn:aws:iam::123456789012:role/MicroVMExecutionRole \
  --idle-policy '{"maxIdleDurationSeconds":900,"suspendedDurationSeconds":300,"autoResumeEnabled":true}'

起動すると専用の HTTPS エンドポイントがもらえて、ネットワーク周りは全部おまかせ。あとは短命の認証トークンを発行して、リクエストの X-aws-proxy-auth ヘッダーに付けて呼び出すだけなの。

使えるリージョンは、US East(バージニア北部・オハイオ)、US West(オレゴン)、ヨーロッパ(アイルランド)、アジアパシフィック(東京)。東京リージョンが最初から入ってるのはうれしいね!料金は AWS Lambda の料金ページで確認してね。

まとめ

  • AWS Lambda MicroVMs は、隔離された状態保持つきのサンドボックスをサーバーレスで動かせる新しいコンピュート基盤だよ
  • Firecracker ベースで VM レベルの隔離。カーネルもリソースも他ユーザーと共有しない
  • 最大 16 vCPU・32 GB メモリ・32 GB ディスク・ARM64、1 セッション最大 8 時間
  • スナップショットで高速起動、アイドル時は自動で一時停止&状態保持、リクエストで自動再開
  • イベント駆動のリクエスト応答は今まで通り Lambda Functions、隔離環境がほしいときは MicroVMs という使い分け

AI が書いたコードや、ユーザーから預かった信用できないコードを、安全に隔離して動かしたい人にどんぴしゃな発表だったよ!