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

如何通过AWS SAM esbuild将静态文件打包进Lambda包?

配置SAM + esbuild将HTML模板打包进Lambda包

步骤1:更新SAM模板的构建配置

在Lambda函数的Metadata.BuildProperties中添加CopyFiles配置,告诉esbuild把HTML模板文件复制到打包后的代码目录里:

EmailNotificationFunction:
  Type: AWS::Serverless::Function
  Properties:
    CodeUri: ./lambdas-node/email-notifications/
    Handler: daily-summary.handler
    Timeout: 120
    MemorySize: 512
    Runtime: nodejs16.x
  Metadata:
    BuildMethod: esbuild
    BuildProperties:
      Sourcemap: true
      EntryPoints:
        - daily-summary.ts
      CopyFiles:
        - Source: emailTemplate.html
          Destination: .

这里CopyFiles的Source是本地模板文件的相对路径(相对于CodeUri指定的目录),Destination: .表示把文件复制到打包后的根目录,和生成的handler文件放在一起。

步骤2:调整代码中的文件读取路径

Lambda执行时的工作目录可能和本地开发环境不一致,建议用__dirname结合path模块构建绝对路径,避免相对路径出错:

如果是JavaScript:

const fs = require('fs');
const path = require('path');

const templateContent = fs.readFileSync(path.join(__dirname, 'emailTemplate.html'), 'utf-8');

如果是TypeScript:

import fs from 'fs';
import path from 'path';

const templateContent = fs.readFileSync(path.join(__dirname, 'emailTemplate.html'), 'utf-8');

完成以上配置后,执行sam build时,esbuild会自动把emailTemplate.html复制到Lambda包中,部署后函数就能正常读取到模板文件了。

内容的提问来源于stack exchange,提问作者Tim Van Laer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 10:45:46