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

Terraform部署AWS Lambda Layer时source_path为null的错误解决

解决Terraform部署AWS Lambda Layer的source_path null错误

问题定位

你遇到的Could not locate source_path "null"错误,核心是模块对source_path参数的解析异常,同时伴随IAM角色命名无效问题,源于模块默认行为与你的配置不匹配。

具体修复步骤

1. 修正source_path配置格式

模块的source_path数组中path字段为纯字符串,无需用jsonencode()包裹。结合你的执行目录terraform/environments/dev,使用Terraform内置的path.module变量生成可靠相对路径,确保解析正确:

module "lambda_layer_pip_requirements" {
  source  = "terraform-aws-modules/lambda/aws"
  # 指定稳定版本,规避版本兼容问题
  version = "~> 5.0"

  create_function = false
  create_layer    = true
  # 禁用默认角色创建,解决IAM角色命名无效错误
  create_role     = false

  layer_name          = "test"
  compatible_runtimes = ["python3.9"]
  runtime             = "python3.9"

  source_path = [
    {
      path             = "${path.module}/../../../aws/lambda"
      pip_requirements = true
      prefix_in_zip    = "python"
    }
  ]
}

2. 禁用默认IAM角色创建

由于你仅创建Layer而非Lambda函数,模块默认会尝试生成Lambda执行角色,引发命名无效错误。添加create_role = false即可阻止模块创建不必要的角色。

3. 指定模块稳定版本

未指定模块版本可能导致使用存在路径解析bug的旧版代码,添加version = "~> 5.0"(可根据模块最新稳定版调整),确保使用兼容代码。

4. 验证路径有效性

在terraform/environments/dev目录下执行以下命令,确认路径指向包含requirements.txt的正确目录:

ls ${PWD}/../../../aws/lambda/requirements.txt

若命令能输出文件信息,说明路径配置正确。

5. 清理缓存重新初始化

若之前的错误导致缓存异常,执行以下命令重置环境:

terraform destroy -auto-approve
rm -rf .terraform/ .terraform.lock.hcl
terraform init

验证部署

完成上述修改后,重新执行terraform apply,模块将正确读取requirements.txt、安装依赖并打包上传Lambda Layer至AWS。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 04:13:20