AWS Lambda (Node.js 18+)

Error: Cannot find module 'aws-sdk'

Error: Cannot find module 'aws-sdk'

What it means

AWS SDK for JavaScript v2 is no longer bundled in the Node.js 18+ Lambda runtimes; only v3 (@aws-sdk/*) is preinstalled.

Why it happens

Lambda preinstalled `aws-sdk` (v2) only on nodejs16.x and earlier. From nodejs18.x the runtime bundles AWS SDK for JavaScript v3 (the modular @aws-sdk/* clients) instead, so `require('aws-sdk')` resolves to nothing after the runtime upgrade.

How to fix it

  1. Preferred: migrate to v3 modular clients, e.g. `const { S3Client } = require('@aws-sdk/client-s3')` instead of `const AWS = require('aws-sdk')`.
  2. v3 also changes calls: clients return promises directly (no `.promise()`), and response shapes differ.
  3. Quick unblock: add `aws-sdk` to package.json and bundle it in the deployment package (no longer free/preinstalled, so it adds cold-start weight).
  4. Rebuild and redeploy the package on the target Node version.

Related deadline: Lambda Node.js 18 EOL2027-02-01.

Find every instance in your project

The free EOLkits scanner runs in your browser (nothing uploaded) and flags this and related breakages across your IaC and dependency files.

Primary source: https://docs.aws.amazon.com/lambda/latest/dg/lambda-nodejs.html

Get the full migration audit — $299, hash-anchored PDF →