如何检索多个 vpc 端点?

How do I retrieve multiple vpc endpoints?

错误:找不到匹配的 VPC 端点 (错误引用数据代码块)

我正在尝试从数据“aws_vpc_endpoint”资源中检索多个端点。我创建了 locals 来检索共享前几个字符的多个端点的服务名称。之后,端点有唯一的字符来单独识别它们。

我希望数据资源循环遍历数据并检索共享这几个字符的每个端点。然后获取“aws_route”的每个端点 ID。仅供参考:端点是从资源“aws_networkfirewall_firewall”创建的。在此代码片段中要查看的主要内容是本地人、数据和资源“aws_route”的最后一行我如何在本地人中表达service_name 不会在那里结束,字符串的其余部分对于端点是唯一的,无需对每个 service_name?

进行硬编码
locals {
  endpoints = {
    service_name = "com.amazonaws.vpce.us-east-1.vpce-svc-"
  }
}

data "aws_vpc_endpoint" "firewall-endpoints" {
  for_each = local.endpoints
  vpc_id   = aws_vpc.vpc.id

  service_name = each.value

  #filter {
  #  name = "tag:AWSNetworkFirewallManaged"
  #  values = [true]
  #}
}

resource "aws_route" "tgw_route" {
  count                  = var.number_azs
  route_table_id         = aws_route_table.tgw_rt[count.index].id
  destination_cidr_block = var.tgw_aws_route[0]
  vpc_endpoint_id        = data.aws_vpc_endpoint.firewall-endpoints["service_name"].id
}

我无法测试这个,但我想你想要做的是这样的:

resource "aws_route" "tgw_route" {
  for_each = aws_networkfirewall_firewall.firewall_status.sync_states

  route_table_id         = aws_route_table.tgw_rt[???].id
  destination_cidr_block = var.tgw_aws_route[0]
  vpc_endpoint_id        = each.value.attachment.endpoint_id
}

我不清楚 firewall_status 输出的结构,因此可能需要稍作更改。主要问题是如何为每个子网获取适当的路由 table ID。您可以通过索引以外的其他方式访问 tgw_rt 模块的输出吗?不幸的是,我没有设置 AWS 防火墙的经验,只有 Terraform,所以我不知道如何解决这部分难题。