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 create/update restrictions2027-02-01.

Check configured patterns in your project

The free EOLkits scanner processes files in your browser and flags selected related patterns in supported IaC and dependency files. File names and contents are not uploaded; bounded aggregate file and finding counts may be sent. It is not a complete source or AWS-account scan.

Prefer a 10-second check? Paste your config into the free AWS EOL checker. Pasted input is not uploaded; bounded first-party usage events may be sent.

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

Inspect the $299 report sample and availability →