terraform 中的文件功能未检测到路径中的文件

Adi*_*roo 2 aws-lambda terraform

这是我的 lambda 角色代码,我希望我的函数从 iam/lambda-assume-policy.json 的文件路径读取文件:

resource "aws_iam_role" "lambda_role" {
  name = "lambda_role"

  assume_role_policy = file("./iam/lambda-assume-policy.json")
}
Run Code Online (Sandbox Code Playgroud)

当我运行 terraform plan 时,这是它抛出的错误:

   Call to function "file" failed: no file exists at
   iam/lambda-assume-policy.json.
Run Code Online (Sandbox Code Playgroud)

Mar*_*ins 5

默认情况下,该file函数解析相对于运行 Terraform 的当前工作目录的给定路径。这通常是包含根模块的目录。

在文件作为模块的一部分包含在内的常见情况下,我们通常希望使用相对于该模块自己的目录而不是根目录的路径。我们可以通过插值来做到这一点path.module,如下所示:

  assume_role_policy = file("${path.module}/iam/lambda-assume-policy.json")
Run Code Online (Sandbox Code Playgroud)

为了使 Terraform 配置通常与运行 Terraform 的平台无关,Terraform 配置通常使用正斜杠,因为它们由 Unix 系统使用并且受Windows 系统支持(即使反斜杠是默认分隔符)。因此,path.module即使在 Windows 上也会生成包含正斜杠的路径。期望您在其后编写的其余路径也将使用正斜杠。