【问题标题】:Unknown token IDENT aws_region未知令牌 IDENT aws_region
【发布时间】:2020-04-15 16:45:24
【问题描述】:

我刚刚运行 Terraform 升级。我的代码已更新,但现在显示一些错误。第一个是:

variable "s3_bucket_name" {
  type = list(string)
  default = [
    "some_bucket_name",
    "other_bucket_name",
    ...
  ]
}

它不喜欢list(string)。我回到第一格,重新编写了整个 Getting Started 教程。它说我可以明确声明type = list,或者我可以通过省略类型并仅使用[方括号]来隐式声明它。

我在这里看到:unknown token IDENT list error for IP address variable,我可以使用"list"(引号),但我在list(string) 上找不到任何信息。

所以我注释掉了我的list(string),这将错误移到了下一部分。

provider "aws" {
  region = var.aws_region
}

本教程表明这是创建区域标签的正确方法(实际上本教程的一部分包含该确切代码)。

谁能帮助我理解 Unknown token IDENT 的含义,因为它贯穿我的代码,但它并不能帮助我理解我应该做些什么来修复它。

【问题讨论】:

  • 您使用的是什么版本的 Terraform?这是 Terraform 0.12 中引入的 HCL2 语法
  • 如何查看哪个版本?

标签: terraform terraform-provider-aws


【解决方案1】:

当您执行terraform 0.12upgrade 并且您的代码语法已经在 Terraform 0.12x 或显然是 terraform init 之类的 terraform 命令时,可能会发生未知令牌 IDENT 错误。

variable "var1" {
  type = "list"
  ...
} 

这是一个 Terraform 0.11x syntax 替代 12x 是 type = list(string)

为了重现您的错误,我有一个 Terraform 代码 0.12x,我执行了terraform 0.12upgrade,然后出现了unknown token: IDENT

总之,我认为您的第一次代码迭代已经具有正确的语法,因此无需升级。 为避免此类错误,您可以在代码中添加一个新的 version.tf 文件,其中包含以下内容:

terraform {
  required_version = ">= 0.12"
}

升级提示:

  1. 不要在同一个 Terraform 代码中混用语法,如果是这样,请将代码手动降级到 0.11x
  2. 将所有 Terraform 代码语法放在 0.11x 中
  3. 然后运行:terraform 0.12upgrade

【讨论】:

  • 欢迎来到社区,感谢您的回答。
  • 有没有办法知道我正在运行哪个版本的 Terraform?抱歉,如果这是一个愚蠢的问题,我真的很陌生。
  • $ terraform version :打印 Terraform 版本
猜你喜欢
  • 2019-03-15
  • 1970-01-01
  • 1970-01-01
  • 2018-03-20
  • 2016-09-23
  • 2016-04-22
  • 1970-01-01
  • 1970-01-01
  • 2022-11-10
相关资源
最近更新 更多