未知令牌 IDENT aws_region

问题描述 投票:0回答:2

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

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

不喜欢

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

我在这里看到:IP地址变量的未知令牌IDENT列表错误我可以使用

"list"
(引号)但我找不到关于
list(string)
的任何信息。

所以我注释掉了我的

list(string)
,这将错误移到了下一部分。

provider "aws" {
  region = var.aws_region
}

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

任何人都可以帮助我理解

Unknown token IDENT
的含义,因为它贯穿于我的代码中,但它并不能帮助我理解我应该如何修复它。

terraform terraform-provider-aws
2个回答
28
投票

当您执行

terraform 0.12upgrade
并且您的代码语法已经在 Terraform 0.12x 中或者显然是混合语法版本时出现此错误 <= 0.11x and 0.12x. Also the Unknown token IDENT error can happen when your installed version on your local machine (or in the remote CI/CD server) is 0.11x and your code syntax is on 0.12x and you run a terraform command such as
terraform init

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

0
投票

Terraform 版本:

0.11.14

我也必须修复代码。

改变了

data.terraform_remote_state.vpc.main_vpc_id

"${data.terraform_remote_state.vpc.main_vpc_id}"

© www.soinside.com 2019 - 2024. All rights reserved.