使用Terraform引用同级目录中的Lambda源文件
我试图使用Terraform部署Lambda函数,其中我的源文件位于与我的Terraform文件相邻的不同目录中。我想让Terraform为我压缩源文件,并将它们部署到Lambda中。不过,Terraform似乎不想承认我的文件在那里 我的目录结构:使用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
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
目录下,无需任何权限更改,现在它可以很好地查看和部署文件。但我不想这样安排。