如何通过Terraform为AWS S3 VPC端点创建ACL规则?

时间:2018-07-06 08:34:04

标签: amazon-web-services amazon-s3 terraform terraform-provider-aws

我需要通过Terraform为S3设置VPC端点。

为此,我需要为S3在适当区域中的 all 所有 规则添加规则。

我可以使用aws_prefix_list数据源来获取CIDR块。

然后问题是添加了规则。 规则需要通过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
}

有什么想法吗?

0 个答案:

没有答案