You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从@aws-cdk/aws-lambda-nodejs迁移至AWS CDK v2?求依赖部署示例

在AWS CDK v2中部署带依赖的Node.js Lambda函数

CDK v2已经把v1的分散包整合进了统一的aws-cdk-lib库,原v1的@aws-cdk/aws-lambda-nodejs对应v2里的aws-cdk-lib/aws-lambda-nodejs模块——它依然保留了自动打包依赖的核心能力,用法和v1接近但有少量调整,下面是具体实现步骤:

1. 安装必要依赖

先确保你的项目已经升级到CDK v2,然后安装Node.js Lambda相关模块:

npm install aws-cdk-lib aws-cdk-lib/aws-lambda-nodejs @types/aws-lambda

2. 编写带第三方依赖的Lambda代码

比如在src/handler.ts中写一个用到axios的示例函数:

import axios from 'axios';

export async function handler(event: any) {
  const res = await axios.get('https://api.example.com/data');
  return {
    statusCode: 200,
    body: JSON.stringify({ fetchedData: res.data })
  };
}

3. 在CDK栈中定义Lambda函数

import { Stack, StackProps } from 'aws-cdk-lib';
import { Construct } from 'constructs';
import { NodejsFunction } from 'aws-cdk-lib/aws-lambda-nodejs';
import { Runtime } from 'aws-cdk-lib/aws-lambda';

export class MyLambdaStack extends Stack {
  constructor(scope: Construct, id: string, props?: StackProps) {
    super(scope, id, props);

    new NodejsFunction(this, 'NodejsLambdaWithDeps', {
      runtime: Runtime.NODEJS_20_X, // 选对应版本的Node.js运行时,建议用LTS版
      entry: './src/handler.ts', // 函数入口文件路径
      handler: 'handler', // 代码中导出的处理函数名
      // 可选:自定义打包规则
      bundling: {
        minify: true, // 开启代码压缩减小包体积
        externalModules: ['aws-sdk'], // Lambda环境自带AWS SDK,可排除避免重复打包
      }
    });
  }
}

关键注意事项

  • 自动打包逻辑:NodejsFunction会自动读取项目package.json的依赖,把第三方包和业务代码一起打包成zip上传到Lambda,无需手动处理node_modules。
  • 运行时兼容性:必须选择CDK支持的Node.js版本,避免使用已停止维护的运行时。
  • TypeScript支持:模块原生兼容TS,无需额外配置编译流程,会自动转译为JS。

替代方案:手动打包(按需使用)

如果默认打包逻辑不符合需求,可以用esbuild或webpack手动打包,再通过lambda.Function指定打包后的文件:

import { Function, Runtime, Code } from 'aws-cdk-lib/aws-lambda';

new Function(this, 'ManualPackLambda', {
  runtime: Runtime.NODEJS_20_X,
  handler: 'dist/handler.handler',
  code: Code.fromAsset('./dist'), // 指向手动打包后的目录
});

对应的打包脚本可加在package.json中:

{
  "scripts": {
    "build": "esbuild src/handler.ts --bundle --minify --platform=node --outfile=dist/handler.js"
  }
}

内容的提问来源于stack exchange,提问作者Denys Medvediev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 11:48:10