如何检索多个 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,所以我不知道如何解决这部分难题。
错误:找不到匹配的 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,所以我不知道如何解决这部分难题。