我需要通过 Terraform 为 S3 设置 VPC 端点。
为此,我需要在我的 acl中为相应区域中 S3 使用的所有CIDR 块添加规则。
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
}
有什么想法吗?