Как создать правила ACL для конечной точки VPS AWS S3 через Terraform? - PullRequest
0 голосов
/ 06 июля 2018

Мне нужно настроить конечную точку VPC для S3 через Terraform.

Для этого мне нужно добавить правила к моему acl для всех блоков CIDR, используемых S3 в соответствующем регионе.

Я могу получить блоки CIDR, используя источник данных aws_prefix_list.

Проблема заключается в добавлении правил. Правила необходимо добавлять по одному через ресурс aws_network_acl_rule.

Однако, не зная заранее, сколько блоков CIDR будет возвращено, невозможно перечислить их (Terraform не позволяет просто подсчитывать результаты).

Я не хочу жестко задавать количество ожидаемых результатов (которое отличается в зависимости от региона и времени).

Следующая ошибка не выполняется с ошибкой * aws_network_acl_rule.private_s3: aws_network_acl_rule.private_s3: value of 'count' cannot be computed, поскольку она не знает во время планирования, сколько результатов будет возвращено.

resource "aws_vpc_endpoint" "private_s3" {
  vpc_id       = "{var.vpc_id}"
  service_name = "com.amazonaws.us-west-2.s3"
}

data "aws_prefix_list" "private_s3" {
  prefix_list_id = "${aws_vpc_endpoint.private_s3.prefix_list_id}"
}

resource "aws_network_acl" "bar" {
  vpc_id       = "{var.vpc_id}"
}

resource "aws_network_acl_rule" "private_s3" {
  count = "${length(data.aws_prefix_list.private_s3.cidr_blocks)}"

  network_acl_id = "${aws_network_acl.bar.id}"
  rule_number    = 200
  egress         = false
  protocol       = "tcp"
  rule_action    = "allow"
  cidr_block     = "${data.aws_prefix_list.private_s3.cidr_blocks[count.index]}"
  from_port      = 443
  to_port        = 443
}

Есть мысли?

...