如何用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
相关产品推荐
相关产品推荐

