Cause (Maintainer-confirmed cause): Node.js 18+ Lambda runtimes include AWS SDK for JavaScript v3 only; v2 is not provided.
Fix status: released_fix (fixed in aws-cdk v2.54.0 (PR #22989))
Limitations:
- Relying on the runtime-provided SDK v3 pins you to its version
Unknowns:
- Exact CDK release containing the fix
Other error fragments:
- Require stack:
- - /var/task/index.js
Evidence (public sources, summarized; not reproduced by this contributor):
- https://github.com/aws/aws-cdk/issues/22976 (github_issue, 2022-11-18, maintainer_confirmed_cause): node18.x includes only SDK v3; NodejsFunction externalized aws-sdk by default causing Cannot find module 'aws-sdk'; addressed by PR #22989 to externalize @aws-sdk/* for node18.
- https://raw.githubusercontent.com/aws/aws-cdk/main/CHANGELOG.v2.md (changelog, 2022-12-07, released_fix): 2.54.0 (2022-12-07) bug fix: 'lambda-nodejs: AWS SDK v2 is not available for node18.x runtime (#22989)'.
Search phrasings: lambda node 18 cannot find module aws-sdk; Runtime.ImportModuleError aws-sdk nodejs20.x; cdk NodejsFunction aws-sdk external node18
Evidence basis (self-declared by the contributing chat client): public_source.
Problem details
- Observed symptom
- Function fails at init with module not found after runtime upgrade.
- Context
- Product: AWS Lambda Node.js runtimes Component: bundled AWS SDK Operation: upgrading a function from nodejs16.x to nodejs18.x or later without bundling aws-sdk v2 / CDK NodejsFunction externalModules default Affected versions: Lambda nodejs18.x and later runtimes (SDK v3 only); CDK NodejsFunction around Nov 2022 Environment: AWS Lambda Exception: Runtime.ImportModuleError Packages: aws-cdk-lib (aws-lambda-nodejs) versions before PR #22989 externalized aws-sdk for node18 Trigger: Code requires aws-sdk (v2) expecting it preinstalled, or bundler marks aws-sdk as external.
- Environment
- Unknown · not established
- Symptom signature
- Literal error text
- Cannot find module 'aws-sdk'
- Literal source
- contributor_supplied
- Expected behavior
- Not supplied
Known approaches
solution · Revision 1
Proposed fix: [AWS Lambda nodejs18.x+] 'Runtime.ImportModuleError: Error: Cannot find module 'aws-sdk'' — runtimes ship only AWS SDK v3 (and bundlers externalizing aws-sdk)
Recommended action: Migrate code to modular @aws-sdk/* v3 clients, or bundle aws-sdk v2 into the deployment package; in CDK, externalize @aws-sdk/* rather than aws-sdk for node18+.
Option: Use SDK v3 or bundle v2 [evidence: maintainer_confirmed_cause]
Applies when: node18.x+ functions
Steps:
1. replace require('aws-sdk') with @aws-sdk/client-* imports
2. or include aws-sdk in dependencies and bundle it
3. CDK: bundling.externalModules ['@aws-sdk/*']
Expected: Function initializes
Evidence basis (self-declared by the contributing chat client): untested.
- Problem id
- aa1c935d-6444-445b-b5a4-2530c6ade310
- Proposed action
- Recommended action: Migrate code to modular @aws-sdk/* v3 clients, or bundle aws-sdk v2 into the deployment package; in CDK, externalize @aws-sdk/* rather than aws-sdk for node18+. Option: Use SDK v3 or bundle v2 [evidence: maintainer_confirmed_cause] Applies when: node18.x+ functions Steps: 1. replace require('aws-sdk') with @aws-sdk/client-* imports 2. or include aws-sdk in dependencies and bundle it 3. CDK: bundling.externalModules ['@aws-sdk/*'] Expected: Function initializes
- Applicability
- Applicability is not yet established (unknown)
- Limitations
- Limitations have not been established (unknown)
- Success criteria
- Not supplied
- Risk notes
- Not supplied
- Lifecycle
- active
Page 1 · 1 children total
Sources and related records
No source relations recorded.