为什么我会得到';属性值类型不正确';在Terraform中创建变量时出错?

为什么我会得到';属性值类型不正确';在Terraform中创建变量时出错?,terraform,Terraform,当我试图在TF中创建变量时,得到了一个不正确的属性值类型 我在这个版本的TF上: Terraform v0.14.4 + provider registry.terraform.io/hashicorp/aws v2.70.0 这是我得到的错误: λ terraform apply Error: Incorrect attribute value type on main.tf line 18, in resource "aws_instance" "ex

当我试图在TF中创建变量时,得到了一个不正确的属性值类型

我在这个版本的TF上:

Terraform v0.14.4
+ provider registry.terraform.io/hashicorp/aws v2.70.0
这是我得到的错误:

λ terraform apply

Error: Incorrect attribute value type

  on main.tf line 18, in resource "aws_instance" "example":
  18:   vpc_security_group_ids = var.vpc_security_group_ids["jf-master-pd"]

Inappropriate value for attribute "vpc_security_group_ids": set of string
required.
这是my
main.tf中的代码块
code:

resource "aws_instance" "example" {
  ami                    = var.amis["us-east-1"]
  instance_type          = "t2.micro"
  vpc_security_group_ids = var.vpc_security_group_ids["jf-master-pd"]
  subnet_id              = var.subnet_id["jf-master-pd"]
  key_name               = "jf-timd-keypair"
}
这些是我试图在
variables.tf
文件中设置的变量:

variable "vpc_security_group_ids" {
  type = map(string)
  default = {
    "jf-master-pd"     = "sg-0333d9eaaeb3ab1b0"
    "jf-master-pd-gov" = "sg-7f051404"
  }
}


variable "subnet_id" {
  type = map(string)
  default = {
    "jf-master-pd"     = "subnet-3ab1835d"
    "jf-master-pd-gov" = "subnet-4dad6304"
  }
}
main.tf
variables.tf
文件位于同一目录中


为什么我会犯这个错误?如何更正它?

我必须在变量中提供一个列表。这解决了问题:

variable "vpc_security_group_ids" {
  type = map(list(string))
  default = {
    "jf-master-pd"     = ["sg-0333d9eaaeb3ab1b0"]
    "jf-master-pd-gov" = ["sg-7f051404"]
  }
}

您提供的是一个字符串,而不是错误消息所指示的一组字符串。您希望在变量中只访问一个安全组,还是同时访问映射中的两个安全组?我只需要一个。这两个安全组来自不同的aws帐户。我想根据选择的是
'jf-master-pd
帐户还是
jf-master-pd gov
帐户来选择正确的安全组。是的,因为vpc_security_group_id实际上需要一个与文档相关联的列表:vpc_security_group_id-(可选,仅限vpc)安全组id列表。