Terraform 给我 Fileset IDENT 错误
Terraform is giving me Fileset IDENT error
我正在尝试将多个文件上传到 S3 存储桶,如此 article 中所示,其中还有一个视频,这是我使用的代码
# Create a bucket
resource "aws_s3_bucket" "b1" {
bucket = "s3-terraform-bucket-labbb"
acl = "private" # or can be "public-read"
tags = {
Name = "My bucket"
Environment = "Dev"
}
}
resource "aws_s3_bucket_object" "object1" {
for_each = fileset("myfiles/", "*")
bucket = aws_s3_bucket.b1.id
key = each.value
source = "myfiles/${each.value}"
etag = filemd5("myfiles/${each.value}")
}
Buildspec.yml
version: 0.2
phases:
install:
commands:
- "apt install unzip -y"
- "wget https://releases.hashicorp.com/terraform/0.11.14/terraform_0.11.14_linux_amd64.zip"
- "unzip terraform_0.11.14_linux_amd64.zip"
- "mv terraform /usr/local/bin/"
pre_build:
commands:
- terraform init
build:
commands:
- terraform $TF_COMMAND -auto-approve
post_build:
commands:
- echo terraform $TF_COMMAND completed on `date`
当我在 codebuild 中 运行 TF 模板时,我会得到这个错误
Error: Error parsing /codebuild/output/src634819119/src/s3bucket.tf: At 12:16: Unknown token: 12:16 IDENT fileset
有人知道我是否遗漏了什么或者 Terraform 是否有问题吗?谢谢!
您在文件路径中遗漏了 ${path.module}
。它被推荐在
Terraform Official docs。它也有一些很好的例子。
resource "aws_s3_bucket_object" "object1" {
for_each = fileset("${path.module}/myfiles/", "*")
bucket = aws_s3_bucket.b1.id
key = each.value
source = "myfiles/${each.value}"
etag = filemd5("myfiles/${each.value}")
}
您使用的是非常旧的地形 (0.11.14)。 Current version 是 0.14.7。尽管使用旧版本,但您的 terraform 代码是现代的,因此不适用于 0.11 版本。
您要么必须重新编写您的代码以使其在 0.11 版本中有效,要么升级您的 terraform 版本会更好。
我正在尝试将多个文件上传到 S3 存储桶,如此 article 中所示,其中还有一个视频,这是我使用的代码
# Create a bucket
resource "aws_s3_bucket" "b1" {
bucket = "s3-terraform-bucket-labbb"
acl = "private" # or can be "public-read"
tags = {
Name = "My bucket"
Environment = "Dev"
}
}
resource "aws_s3_bucket_object" "object1" {
for_each = fileset("myfiles/", "*")
bucket = aws_s3_bucket.b1.id
key = each.value
source = "myfiles/${each.value}"
etag = filemd5("myfiles/${each.value}")
}
Buildspec.yml
version: 0.2
phases:
install:
commands:
- "apt install unzip -y"
- "wget https://releases.hashicorp.com/terraform/0.11.14/terraform_0.11.14_linux_amd64.zip"
- "unzip terraform_0.11.14_linux_amd64.zip"
- "mv terraform /usr/local/bin/"
pre_build:
commands:
- terraform init
build:
commands:
- terraform $TF_COMMAND -auto-approve
post_build:
commands:
- echo terraform $TF_COMMAND completed on `date`
当我在 codebuild 中 运行 TF 模板时,我会得到这个错误
Error: Error parsing /codebuild/output/src634819119/src/s3bucket.tf: At 12:16: Unknown token: 12:16 IDENT fileset
有人知道我是否遗漏了什么或者 Terraform 是否有问题吗?谢谢!
您在文件路径中遗漏了 ${path.module}
。它被推荐在
Terraform Official docs。它也有一些很好的例子。
resource "aws_s3_bucket_object" "object1" {
for_each = fileset("${path.module}/myfiles/", "*")
bucket = aws_s3_bucket.b1.id
key = each.value
source = "myfiles/${each.value}"
etag = filemd5("myfiles/${each.value}")
}
您使用的是非常旧的地形 (0.11.14)。 Current version 是 0.14.7。尽管使用旧版本,但您的 terraform 代码是现代的,因此不适用于 0.11 版本。
您要么必须重新编写您的代码以使其在 0.11 版本中有效,要么升级您的 terraform 版本会更好。