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

推荐订阅源

宝玉的分享
宝玉的分享
Engineering at Meta
Engineering at Meta
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 聂微东
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Last Week in AI
Last Week in AI
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 三生石上(FineUI控件)
T
Tailwind CSS Blog
Apple Machine Learning Research
Apple Machine Learning Research
Hugging Face - Blog
Hugging Face - Blog
爱范儿
爱范儿
博客园 - 司徒正美
人人都是产品经理
人人都是产品经理
Jina AI
Jina AI
博客园 - 叶小钗
雷峰网
雷峰网
罗磊的独立博客
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - Franky
WordPress大学
WordPress大学
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
阮一峰的网络日志
阮一峰的网络日志
量子位

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
Migrating AWS Lambda from Node.js 20 to 22 — every breaki...
ntoledo319 · 2026-06-23 · via DEV Community

ntoledo319

AWS deprecates Lambda runtimes on a 3-phase schedule: Phase 1 ends security patches, Phase 2 blocks creating new functions, Phase 3 blocks updating existing ones. Once Phase 3 hits, a frozen function's only path forward is a full redeploy on a new runtime. nodejs20.x is on that track; nodejs22.x is the target (LTS, maintained into 2027).

Most code moves cleanly. Here's the set that doesn't.

1. aws-sdk v2 is no longer bundled

On nodejs16.x and earlier, AWS preinstalled the v2 SDK. From nodejs18.x onward, only v3 (@aws-sdk/*) is bundled. So:

Error: Cannot find module 'aws-sdk'

Fix: migrate to modular v3 clients, e.g. const { S3Client } = require('@aws-sdk/client-s3'). v3 also returns promises directly (no .promise()), and response shapes differ. Quick unblock: bundle aws-sdk in your package (adds cold-start weight).

2. Import assertions → import attributes

Node 22 ships the finalized spec, which renamed assert to with:

// Node 20 (valid)  -> Node 22 (broken)
import cfg from './config.json' assert { type: 'json' };
// Node 22 (valid)
import cfg from './config.json' with { type: 'json' };

3. Native addons must be rebuilt

Error: The module was compiled against a different Node.js version using NODE_MODULE_VERSION

Native modules (sharp, bcrypt, better-sqlite3…) are tied to the Node ABI. Rebuild on the target version, or bump to a release with a Node 22 prebuild. Dead packages (node-sass, fibers) must be replaced.

4. OpenSSL 3

Node 17+ ships OpenSSL 3, which rejects legacy hashing some older tooling relies on:

Error: error:0308010C:digital envelope routines::unsupported

Fix: upgrade the tool (webpack 5, react-scripts 5+). --openssl-legacy-provider is a stopgap only.

5. crypto.createCipher removed

crypto.createCipher / createDecipher were removed in Node 22 — switch to createCipheriv with an explicit key + IV (scrypt/pbkdf2 + randomBytes).


I wrote an open-source CLI (lambda-lifeline) that scans for all of these, codemods what's mechanical, patches your IaC, and stages a canary with rollback — plus a free browser scanner that flags them in your config in ~30 seconds, nothing uploaded: eolkits.com/scan.

Full guide with every case + captured output: eolkits.com/blog/migrating-lambda-nodejs-20-to-22