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

如何使AWS Lambda代码在ZIP包解压后位于根目录?

解决AWS Lambda通过ZIP包上传后代码在子目录导致Handler找不到的问题

方法1:修正ZIP打包范围(最直接的解决方式)

问题出在你打包时把整个仓库目录(比如my-lambda-repo/)压缩进去了,解压后Lambda的工作目录下是这个子文件夹,自然找不到根目录的index.handler。

在GitHub Actions的打包步骤里,必须进入代码所在的目录后再执行压缩命令,而不是压缩父目录。举两个常见场景:

  • 如果代码都在仓库根目录的src/子文件夹里:
    cd src && zip -r ../lambda-deploy.zip .
    
  • 如果代码直接在仓库根目录:
    zip -r lambda-deploy.zip .
    

打包完成后可以本地解压验证,确保index.js等核心文件直接在ZIP的根目录,没有嵌套子文件夹。

方法2:调整Lambda的Handler路径(不用改打包逻辑)

要是不想改打包方式,直接修改Lambda函数的Handler配置,指定子目录里的处理程序就行。

比如代码解压后在my-project子目录里,原来的Handler是index.handler,改成my-project/index.handler。在GitHub Actions里可以和更新代码的命令一起执行:

# 先更新代码
aws lambda update-function-code --function-name YOUR_FUNCTION_NAME --zip-file fileb://lambda-deploy.zip
# 再更新Handler配置
aws lambda update-function-configuration --function-name YOUR_FUNCTION_NAME --handler "my-project/index.handler"

方法3:用AWS官方的GitHub Action简化流程

不想自己写打包和CLI命令的话,用AWS官方的Lambda部署Action,它会自动处理打包路径的问题,前提是你按方法1的正确方式生成ZIP包:

- name: Deploy to AWS Lambda
  uses: aws-actions/aws-lambda-deploy@v2
  with:
    function-name: YOUR_FUNCTION_NAME
    zip-file: lambda-deploy.zip

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 02:27:12