使用Terraform引用同级目录中的Lambda源文件

使用Terraform引用同级目录中的Lambda源文件,terraform,terraform-provider-aws,Terraform,Terraform Provider Aws,我试图使用Terraform部署Lambda函数,其中我的源文件位于与我的Terraform文件相邻的不同目录中。我想让Terraform为我压缩源文件,并将它们部署到Lambda中。不过,Terraform似乎不想承认我的文件在那里 我的目录结构: project_root/ deployment/ terraform/ my-terraform.tf function_source/ function.py 我希望它将所有内容打包到function\u

我试图使用Terraform部署Lambda函数,其中我的源文件位于与我的Terraform文件相邻的不同目录中。我想让Terraform为我压缩源文件,并将它们部署到Lambda中。不过,Terraform似乎不想承认我的文件在那里

我的目录结构:

project_root/
  deployment/
    terraform/
      my-terraform.tf
  function_source/
    function.py
我希望它将所有内容打包到
function\u source
目录中(现在只有一个文件,但以后可能会有更多),并将其放入
deployment
目录中

我的地形:

data "archive_file" "lambda_zip" {
  type          = "zip"
  output_path   = "../function.zip"
  source_dir    = "../../function_source/"
}

resource "aws_lambda_function" "my_lambda" {
  filename          = "${data.archive_file.lambda_zip.output_path}"
  function_name     = "my-function"
  role              = "${aws_iam_role.lambda_role.arn}"
  handler           = "function.handler"
  runtime           = "python3.7"
}
但是,当我运行此操作时,会收到错误消息
data.archive\u file.lambda\u zip:data.archive\u file.lambda\u zip:error归档目录:无法归档缺少的目录:../../function\u source/

我尝试过使用绝对路径,但没有成功(这无论如何都不是一个好的解决方案)。我还尝试手动创建.zip文件,并直接在Lambda声明中对其进行硬编码,但只有当我将.zip文件放在我的
terraform
目录中时,它才起作用。Terraform似乎只能在自己的目录或下面看到文件,但我不想在那里混合我的源文件。有办法做到这一点吗


我正在使用Terraform v0.12.4

有趣的是,您的Terraform代码看起来很正确,应该可以正常工作。Terraform可以看到上面的文件,我已经在我的机器上进行了测试。我想那个目录的权限有问题吧?“ls-sl project_root”bash命令的输出是什么?@congbauguier我也考虑过文件权限,但整个项目中的所有内容至少都有授予用户、组和其他用户的读取权限。此后,我重新安排了我的目录,将
function\u source
放在
terraform
目录下,无需任何权限更改,现在它可以很好地查看和部署文件。但我不想这样安排。