惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
美团技术团队
Last Week in AI
Last Week in AI
WordPress大学
WordPress大学
博客园 - 三生石上(FineUI控件)
博客园 - 聂微东
雷峰网
雷峰网
阮一峰的网络日志
阮一峰的网络日志
博客园 - 叶小钗
IT之家
IT之家
Google DeepMind News
Google DeepMind News
D
Docker
J
Java Code Geeks
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 【当耐特】
V
V2EX
Hugging Face - Blog
Hugging Face - Blog
博客园 - Franky
月光博客
月光博客
宝玉的分享
宝玉的分享
酷 壳 – CoolShell
酷 壳 – CoolShell
aimingoo的专栏
aimingoo的专栏
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
AWS Lambda MicroVMs: I Tested the New Stateful Serverless...
Alexey Vidanov · 2026-06-25 · via DEV Community
Cover image for AWS Lambda MicroVMs: I Tested the New Stateful Serverless Primitive

What just happened

On June 22, 2026, AWS quietly launched Lambda MicroVMs. Not a Lambda feature update. A new compute primitive sitting between Lambda Functions (stateless, 15-min max) and EC2 (full VM, you manage everything).

Each MicroVM is an isolated Firecracker VM with its own HTTPS endpoint, running your code from a pre-built snapshot. Stateful. Up to 8 hours. Suspend when idle, resume on demand.

I tested it the same week. Here's what I found.

The test setup

A minimal Python HTTP server packaged as a Dockerfile:

from http.server import HTTPServer, BaseHTTPRequestHandler
import json, time, os

class Handler(BaseHTTPRequestHandler):
    start_time = time.time()
    request_count = 0

    def do_GET(self):
        Handler.request_count += 1
        body = json.dumps({
            "message": "Hello from Lambda MicroVM!",
            "uptime_seconds": round(time.time() - Handler.start_time, 2),
            "requests_served": Handler.request_count,
            "pid": os.getpid()
        })
        self.send_response(200)
        self.send_header("Content-Type", "application/json")
        self.end_headers()
        self.wfile.write(body.encode())

HTTPServer(("0.0.0.0", 8080), Handler).serve_forever()

The Dockerfile:

FROM public.ecr.aws/lambda/microvms:al2023-minimal
RUN dnf install -y python3 && dnf clean all
WORKDIR /app
COPY app.py .
EXPOSE 8080
CMD ["python3", "app.py"]

How it works

Three steps:

  1. Zip code + Dockerfile → upload to S3
  2. create-microvm-image builds the container, starts the app, takes a Firecracker snapshot of memory and disk
  3. run-microvm launches from that snapshot

Every launch resumes from the pre-initialized state. No cold boot. Your app is already running the moment the MicroVM starts.

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

Image build took about 3 minutes. Once done:

aws lambda-microvms run-microvm \
  --image-identifier arn:aws:lambda:us-east-1:123456789:microvm-image:hello-microvm-test \
  --execution-role-arn arn:aws:iam::123456789:role/MicroVMExecutionRole \
  --idle-policy '{"maxIdleDurationSeconds":300,"suspendedDurationSeconds":60,"autoResumeEnabled":true}'

Response:

{
  "microvmId": "microvm-489fbc1b-1c73-3b37-a9f2-266d0173cb94",
  "state": "RUNNING",
  "endpoint": "34cf7dac-bb5c.lambda-microvm.us-east-1.on.aws"
}

The numbers

Metric Measured
Image build ~3 minutes
Launch API call 1.17s
Time to RUNNING ~12s
First request (from snapshot) 911ms
Warm request latency ~340ms
Suspend → Resume 1.86s

The 340ms warm latency includes my network round-trip from Hamburg to us-east-1. The actual compute latency is lower.

Statefulness proof

This is the part that matters. After three requests:

{"requests_served": 3, "uptime_seconds": 434.76, "pid": 1}

Suspend the MicroVM. Resume it. Send another request:

{"requests_served": 5, "uptime_seconds": 454.1, "pid": 1}

Same PID. Counter continued from where it left off. Uptime kept ticking (includes suspended time). Full memory and disk state preserved across suspend/resume.

Authentication

Each request needs a JWE token generated via the API:

aws lambda-microvms create-microvm-auth-token \
  --microvm-id microvm-489fbc1b \
  --expiration-in-minutes 15 \
  --allowed-ports '[{"port":8080}]'

The token goes in the X-aws-proxy-auth header. Short-lived, scoped to specific ports. No way to hit someone else's MicroVM.

What this replaces

Before Lambda MicroVMs, running untrusted code (AI-generated, user-submitted) meant:

  • Containers with custom hardening — shared kernel, escape risk, significant engineering to harden
  • EC2 per user — minutes to start, expensive, you manage everything
  • Lambda Functions — 15-min max, stateless, no interactive sessions

Lambda MicroVMs fills the gap: VM-level isolation with serverless operational model. No capacity planning. No kernel to patch. Suspend when idle, pay only for snapshot storage.

Specs and limits

  • Compute: 0.5–8 GB RAM baseline, burst to 32 GB. 0.25–4 vCPU baseline, burst to 16.
  • Disk: up to 32 GB
  • Runtime: max 8 hours
  • Architecture: ARM64 only (for now)
  • Protocols: HTTP/1.1, HTTP/2, gRPC, WebSocket, SSE
  • Regions: us-east-1, us-east-2, us-west-2, eu-west-1, ap-northeast-1

Pricing model

Three dimensions:

  • Compute: per-second, based on your chosen baseline + peak usage above it
  • Snapshot operations: read/write when launching or suspending
  • Snapshot storage + data transfer

Suspended MicroVMs cost only storage. No compute charges while idle.

Who should care

If you're building any of these, Lambda MicroVMs changes your architecture:

  • AI agent sandboxes (execute generated code safely)
  • Browser-based IDEs (each user gets their own env)
  • CI/CD runners (isolated per job, no shared state)
  • Jupyter/analytics (state persists across sessions)
  • Vulnerability scanning (disposable, isolated)

What I'd watch

  • ARM64 only is a constraint for workloads compiled for x86
  • 5 regions at launch means some customers wait
  • The snapshot-based model means your app's initialization needs to be snapshot-friendly (no stale connections, no clock-sensitive state at init)
  • Pricing details not fully public yet at time of writing

Getting started

You need AWS CLI v2.35.10+. The lambda-microvms service is a separate command namespace:

aws lambda-microvms list-managed-microvm-images --region us-east-1
aws lambda-microvms create-microvm-image --help
aws lambda-microvms run-microvm --help

The base image (al2023-1) is Amazon Linux 2023 minimal. Your Dockerfile adds what you need on top.


Tested June 24, 2026. Lambda MicroVMs launched June 22 in preview.

Sources