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

如何正确构建AWS Lambda ZIP文件?解决Handler找不到的目录嵌套问题

解决AWS Lambda因压缩目录嵌套导致找不到处理程序的问题

最优解是修正压缩方式,不要修改Lambda配置——AWS Lambda默认要求处理程序文件(比如index.js)和依赖目录node_modules直接放在压缩包的根目录下,嵌套目录会让Lambda找不到指定的handler,而且后续维护容易出问题。

正确的压缩操作方式

  • 手动压缩:打开存放index.js和node_modules的文件夹,直接选中这两个对象右键压缩(注意不要压缩整个父文件夹)。
  • 命令行压缩:切换到这两个文件所在的目录,执行以下命令:
    zip -r on-sign-in-trigger.zip index.js node_modules
    
    确保当前工作目录就是index.js所在的目录,这样压缩出来的ZIP包根目录就会直接包含这两个内容。

特殊情况:必须保留嵌套结构(不推荐)

如果因为某种原因无法调整压缩结构,你可以修改Terraform配置里的handler字段,指定嵌套路径。比如index.js在名为src的子目录里,就把handler改成src/index.handler:

resource "aws_lambda_function" "Lambda" {
  s3_bucket     = var.bucket_id
  s3_key        = "on-sign-in-trigger.zip"
  handler       = "src/index.handler" # 指定嵌套路径
  runtime       = "nodejs18.x"
  role          = aws_iam_role.lambda_iam_role.arn
  function_name = "on-sign-in-trigger-${var.env_name}"
}

但这种方式会增加代码路径的复杂度,后续更新代码或依赖时容易出错,优先推荐调整压缩方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 02:22:27