为什么我会得到';属性值类型不正确';在Terraform中创建变量时出错?
当我试图在TF中创建变量时,得到了一个不正确的属性值类型 我在这个版本的TF上:为什么我会得到';属性值类型不正确';在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
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.
这是mymain.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列表。