Terraform 如何解决此“错误存档目录:无法存档丢失的目录”

Terraform 如何解决此“错误存档目录:无法存档丢失的目录”,terraform,Terraform,在我的项目开始时,有两个terraform模块:base和Reusabled_模块 base/main.tf 可重用_模块/main.tf 团队销售/main.tf 用于为每个团队创建lambda variable "env" {} variable "region" {} module "realdeal" { source = "../team_template" env = "${var.env}" region = "${var.region}" team = "sal

在我的项目开始时,有两个terraform模块:base和Reusabled_模块

base/main.tf

可重用_模块/main.tf

团队销售/main.tf

用于为每个团队创建lambda

variable "env" {}
variable "region" {}

module "realdeal" {
  source = "../team_template"
  env = "${var.env}"
  region = "${var.region}"
  team = "sales"
}
# More stuff tailored for each teams
在team sales中运行terraform plan-var file=dev.tfvars时,出现以下错误:

data.archive\u file.package\u zip:正在刷新状态

错误:刷新状态时出错:发生1个错误:

module.realdeal.module.team\u template.module.mylambda.data.archive\u file.package\u zip: 1发生错误:

module.realdeal.module.team\u template.module.mylambda.data.archive\u file.package\u zip: data.archive\u file.package\u zip:错误存档目录:无法 存档缺少目录: /用户/antkong/Documents/Personal/wd/StackoverflowCode/terraform/lambda/team/scripts/

问题是data.archive\u file.package\u zip正在团队模板/脚本中查找脚本

但在本例中,我实际上在team_模板中没有python代码。我只想继续在可重用的模块/脚本中使用python代码

必须保持文件的分离。康威定律等


我如何做到?

可以考虑将BASE和ReUabable模块合并到一个模块中,并使用PATH模块变量获取模块路径,如默认TrRAFrm解析相对于当前工作目录的路径。

因此,在你的情况下:

source_dir=${path.module}/scripts/path来自顶级模块

编辑:


如果代码不能合并,则可以将PATH模块作为变量从ReUabable模块传递到BASE,然后使用变量而不是PATH。ROOT

< P>可以考虑将BASE和RESABABLE模块合并为一个模块,并使用PATH模块变量获取模块路径,如默认TrRAFrm解析相对于当前工作目录的路径。

因此,在你的情况下:

source_dir=${path.module}/scripts/path来自顶级模块

编辑:


如果无法合并代码,您可以将path.module作为变量从可重用的\u模块传递到base,然后使用变量而不是path.root。root可能不适用于您的问题,但在我遇到相同错误时适用于我的问题

如果您错误地使用source\u dir而不是source\u文件作为归档文件,则会出现相同的错误

例如,改变这一点:

data "archive_file" "source" {
  type         = "zip"
  source_dir   = "${path.module}/lambda_function.py"
  output_path  = "${path.module}/function.zip"
}
为此:

data "archive_file" "source" {
  type         = "zip"
  source_file  = "${path.module}/lambda_function.py"
  output_path  = "${path.module}/function.zip"
}

也许不适用于你的问题,但当我遇到同样的错误时,也适用于我的问题

如果您错误地使用source\u dir而不是source\u文件作为归档文件,则会出现相同的错误

例如,改变这一点:

data "archive_file" "source" {
  type         = "zip"
  source_dir   = "${path.module}/lambda_function.py"
  output_path  = "${path.module}/function.zip"
}
为此:

data "archive_file" "source" {
  type         = "zip"
  source_file  = "${path.module}/lambda_function.py"
  output_path  = "${path.module}/function.zip"
}

没有合并是否可能?我将更新问题,明确说明限制。主要是代码所有权问题。是否可以不合并?我将更新问题,明确说明限制。主要是代码所有权问题。
data "archive_file" "source" {
  type         = "zip"
  source_file  = "${path.module}/lambda_function.py"
  output_path  = "${path.module}/function.zip"
}