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

通过Terraform在GitLab中为AWS Lambda生成Zip文件失败如何解决

问题解决方法

核心原因

报错的本质是Terraform内置相对路径默认相对于执行terraform命令的工作目录,而非tf配置文件所在目录,CI流水线执行命令的工作目录和本地测试不一致时,就会出现zip包生成路径和读取路径不匹配的问题,也有可能是未声明archive provider导致zip包根本未生成。

具体修复步骤

  • 第一步:统一路径规则,使用Terraform内置变量${path.module}固定路径基准,该变量永远指向当前.tf文件所在目录,修改你的lambda.tf代码如下:
data "archive_file" "lambda" {
  type        = "zip"
  source_file = "${path.module}/../src/lambda_function.py"
  output_path = "${path.module}/lambda_function.zip"
}

resource "aws_lambda_function" "automation-lambda" {
  filename         = data.archive_file.lambda.output_path
  description      = "Creating lambda"
  function_name    = "lambda_fx"
  role             = "xxxxxxxxxxxxx"  
  handler          = "lambda_function.lambda_handler"
  memory_size      = 128
  timeout          = 300
  source_code_hash = data.archive_file.lambda.output_base64sha256
  runtime          = "python3.7"
}
  • 第二步:声明archive provider依赖,确保CI环境能正确执行打包动作,在Terraform配置的版本声明块中加入archive provider:
terraform {
  required_providers {
    archive = {
      source  = "hashicorp/archive"
      version = "~> 2.4"
    }
    # 你原来的aws provider声明保留即可
  }
}
  • 第三步:调整CI执行命令的工作目录,要么cd到terraform目录后再执行terraform init/apply,要么在根目录执行时带上-chdir参数:terraform -chdir=terraform init、terraform -chdir=terraform apply。

可选排查手段

如果修改后依然报错,可以在CI流水线的Terraform执行步骤前增加目录校验命令,确认路径结构符合预期:
pwd && ls -R ./src ./terraform

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 14:15:06