Terrafrom источник данных aws_vpcs - ошибка count.index - PullRequest
0 голосов
/ 29 июня 2019

Я пытаюсь использовать источник данных aws_vpcs для получения идентификатора vpc, имеющего определенный тег.

Для справки: https://www.terraform.io/docs/providers/aws/d/vpcs.html

Ниже приведен мой файл terraform yaml.Используемая версия Terrafrom: 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]

Ответы [ 2 ]

1 голос
/ 29 июня 2019

Вам нужно будет преобразовать список групп безопасности.Terraform предоставляет функцию выравнивания, чтобы сделать это https://nedinthecloud.com/2018/07/16/terraform-fotd-flatten/ Вы не должны получать эту ошибку впоследствии

1 голос
/ 29 июня 2019

Вы создаете список aws_security_group, поскольку используете счетчик для ресурса aws_security_group. Ошибка даже упоминает это:

Поскольку в aws_security_group.cluster установлено значение «count», его атрибуты должен быть доступен в определенных случаях.

Таким образом, либо вам нужно включить счетчик для ресурса aws_security_group_rule и создать один aws_security_group_rule для каждого созданного aws_security_group, либо, если вы ожидаете, что будет возвращен только один VPC, создайте только один aws_security_group, получив доступ возвращенный aws_vpcs.foo.ids с индексом 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...