未知令牌标识aws_region



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

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

它不喜欢list(string). 我回到了原点,重做了整个入门教程。 它说我可以明确说明type = list或者我可以通过省略类型并仅使用[方括号]来隐含地陈述它。

我在这里看到:IP地址变量的未知令牌识别列表错误,我可以"list"(引号(使用,但我找不到有关list(string)的任何信息。

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

provider "aws" {
region = var.aws_region
}

本教程指出这是创建区域标记的正确方法(实际上本教程中有部分包含该确切代码(。

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

当您执行terraform 0.12upgrade并且您的代码语法已经在 Terraform 0.12x 中或显然是语法版本 <= 0.11x 和 0.12x 的混合时,会出现此错误。此外,当在本地计算机(或远程 CI/CD 服务器(上安装的版本为 0.11x 且代码语法为 0.12x 并且运行 terraform 命令(如terraform init

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

这是一个大地 0.11x 语法,替代 12x 是类型 = list(字符串(

为了重现您的错误,我有一个 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. 然后运行:地形 0.12升级

地形版本:0.11.14

我也必须修复代码。

改变

data.terraform_remote_state.vpc.main_vpc_id

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

相关内容