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

Travis CI部署AWS Lambda时自动在handler_name前添加index问题

Fixing Travis CI's Automatic "index" Prefix for AWS Lambda Handler

我之前也踩过这个坑!Travis CI的Lambda部署插件有个默认行为会偷偷给你的handler路径加上index.前缀,直接导致你的Handler配置变成index.lambda/testfile.lambda_handler,完全不符合预期。

问题根源

Travis的Lambda部署工具默认假设你的代码会打包成一个包含index.js(或对应语言入口文件)的压缩包,所以自动给handler_name追加了index.前缀。但你的项目结构是把代码放在lambda目录下的testfile.py,这个默认逻辑就直接搞砸了配置。

解决方案

你需要在.travis.yml的deploy配置里新增zip字段指定打包目录,同时调整handler_name的格式,让Travis停止自动添加前缀。修改后的配置如下:

language: generic
deploy:
  provider: lambda
  function_name: MyFunction
  region: us-east-1
  role: correct_roleid
  runtime: python3.6
  handler_name: testfile.lambda_handler  # 移除lambda/目录前缀
  zip: lambda/  # 指定要打包的lambda目录
  access_key_id: key_id
  secret_access_key: secure: secret

为什么这样有效?

  • 指定zip: lambda/后,Travis会把lambda目录下的所有文件直接打包到压缩包根目录,而不是把整个lambda目录放进包内。这样testfile.py就处于压缩包的根路径下。
  • 对应的handler_name改成testfile.lambda_handler后,Travis不会再自动添加index.前缀,AWS Lambda就能正确找到testfile.py里的lambda_handler函数。

验证步骤

修改配置后重新触发Travis构建:

  • 构建完成后,登录AWS Lambda控制台查看函数配置,Handler应该显示为testfile.lambda_handler,不再有错误的index前缀。
  • 执行一次函数测试,确认功能正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:03:12