Amazon web services Terrafrom数据源aws_vpcs-count.index错误

Amazon web services Terrafrom数据源aws_vpcs-count.index错误,amazon-web-services,terraform,Amazon Web Services,Terraform,我正在尝试使用数据源aws_vpc获取具有特定标记的vpc id 供参考: 下面是我的地形yaml文件。 使用的版本为:0.12.3 data "aws_vpcs" "foo" { tags = { Name = "test1-VPC" } } resource "aws_security_group" "cluster" { count = "${length(data.aws_vpcs.foo.ids)}" vpc_id = "${tolist(data.aws_

我正在尝试使用数据源aws_vpc获取具有特定标记的vpc id

供参考:

下面是我的地形yaml文件。 使用的版本为:0.12.3

data "aws_vpcs" "foo" {
  tags = {
    Name = "test1-VPC"
  }
}

resource "aws_security_group" "cluster" {
  count = "${length(data.aws_vpcs.foo.ids)}"
  vpc_id = "${tolist(data.aws_vpcs.foo.ids)[count.index]}"
}

resource "aws_security_group_rule" "cluster-ingress-node-https" {
  description              = "Rule to do xyz"
  from_port                = 443
  protocol                 = "tcp"
  security_group_id        = "${aws_security_group.cluster.id}"
  to_port                  = 443
  type                     = "ingress"
}
我正在犯错误。请求帮助以修复此问题

terraform plan

Error: Missing resource instance key

  on modules/eks/eks-cluster.tf line 40, in resource "aws_security_group_rule" "cluster-ingress-node-https":
  40:   security_group_id        = "${aws_security_group.cluster.id}"

Because aws_security_group.cluster has "count" set, its attributes must be
accessed on specific instances.

For example, to correlate with indices of a referring resource, use:
    aws_security_group.cluster[count.index]

在使用
aws\u security\u组
资源时,您正在创建
aws\u security\u组
的列表。错误甚至提到:

因为aws_security_group.cluster设置了“count”,所以它的属性 必须在特定实例上访问


因此,您需要包括count on the
aws_security_group_rule
资源,并为创建的每个
aws_security_group_rule
创建一个
aws_security_group_rule
,或者如果您希望只返回一个VPC,通过访问返回的索引为0的
aws\u vpcs.foo.ids
,只创建一个
aws\u security\u组

在使用
aws\u security\u组
资源时,您正在创建一个
aws\u security\u组
的列表。错误甚至提到:

因为aws_security_group.cluster设置了“count”,所以它的属性 必须在特定实例上访问


因此,您需要包括count on the
aws_security_group_rule
资源,并为创建的每个
aws_security_group_rule
创建一个
aws_security_group_rule
,或者如果您希望只返回一个VPC,通过访问返回的索引为0的
aws\u vpcs.foo.ids
,只创建一个
aws\u security\u组。

您需要转换安全组列表。 Terraform提供了展平功能
之后不应出现此错误

您需要转换安全组列表。 Terraform提供了展平功能
您不应该在事后收到此错误

我知道这是不久前发布的。偶然发现了这个问题

${aws\u security\u group.cluster.*.id}
应该这样做


由于
资源aws\u security\u组
正在创建多个具有计数的安全组,因此资源块
aws\u security\u组规则
需要引用列表中的正确索引。

我知道这是不久前发布的。偶然发现了这个问题

${aws\u security\u group.cluster.*.id}
应该这样做


由于
资源aws\u security\u group
正在创建多个具有计数的安全组,因此资源块
aws\u security\u group\u rule
需要引用列表中的正确索引。

您是否确实有多个VPC以这种方式标记,并试图同时管理?如果没有,您应该使用单一的
aws_vpc
数据源,并删除此处的所有
计数。您是否确实有多个vpc以这种方式标记,并试图同时管理?如果不是,您应该使用单数
aws_vpc
数据源并删除此处的所有
计数。谢谢。。我可以使用as-bellow-security\u-group\u-id=“${aws\u-security\u-group.cluster.0.id}谢谢..我可以使用as-bellow-security\u-group\u-id=“${aws\u-security\u-group.cluster.0.id}谢谢。我还没有用过flatten,但会研究一下的。谢谢。我还没有用过flatten,但会研究一下。