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

如何用NodejsFunction打包附加文件?CDK Lambda添加HTML文件方案

如何通过CDK NodejsFunction上传额外HTML文件到Lambda代码源

针对你的CDK 2.58.1版本,你可以通过NodejsFunction的bundling.copyFiles配置,将额外的HTML文件打包到Lambda代码源中,具体修改如下:

修改后的CDK代码

const mailerFunction = new aws_lambda_nodejs.NodejsFunction(this, 'ApiNotificationHandler', {
    runtime: lambda.Runtime.NODEJS_14_X,
    memorySize: 1024,
    timeout: cdk.Duration.seconds(3),
    handler: 'main',
    entry: path.join(__dirname, '../../src/mailer/index.ts'),
    environment: {
        SES_REGION,
        SES_EMAIL_FROM,
        SES_EMAIL_TO,
    },
    bundling: {
        copyFiles: [
            {
                // 本地HTML文件的绝对路径,根据你的实际位置调整
                source: path.join(__dirname, '../../src/mailer/templates/email.html'),
                // 代码包中的目标位置,设为'.'表示与handler同目录
                destination: '.'
            }
        ]
    }
});

关键说明

  • bundling.copyFiles 是CDK专门用于打包非TS/JS资源的配置,会在Lambda代码编译打包时,将指定文件复制到最终的代码包内
  • source 需要填写本地文件的绝对路径,用path.join保证跨平台路径兼容性
  • 如果需要上传多个HTML文件,可以添加多个对象到copyFiles数组,或者用通配符匹配(比如../../src/mailer/templates/*.html),同时将destination设为子目录(比如'templates/'),方便Lambda代码统一读取

Lambda代码中读取HTML文件

在你的index.ts中,可以通过文件系统模块读取打包后的HTML文件:

import * as fs from 'fs';
import * as path from 'path';

// 读取同目录下的email.html文件
const emailTemplate = fs.readFileSync(path.join(__dirname, 'email.html'), 'utf8');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 10:10:33