Поскольку data.terraform_remote_state.vpc.outputs
является отображением, вы можете использовать синтаксис атрибута или синтаксис индекса для доступа к значениям внутри:
- Синтаксис атрибута:
data.terraform_remote_state.vpc.outputs.us-west-1-vpc-private_routing_tables
- Синтаксис индекса:
data.terraform_remote_state.vpc.outputs["us-west-1-vpc-private_routing_tables"]
Преимущество синтаксиса индекса заключается в том, что вы можете использовать любое выражение в этих скобках, если его результатом является строка. В частности, вы можете использовать синтаксис интерполяции шаблона:
data.terraform_remote_state.vpc.outputs["${var.region}-vpc-private_routing_tables"]
С учетом сказанного, в такой ситуации, когда вы производите одну и ту же информацию для ряда различных объектов - в данном случае регионов - - более обычным является объединение всех этих значений в одно отображение при объявлении выходных данных, так что эти связанные значения явно группируются в одну коллекцию. Например:
output "vpc_private_routing_table_ids" {
value = {
us-east-1 = aws_route_table.us-east-1.id
us-west-2 = aws_route_table.us-west-2.id
}
}
Затем с точки зрения потребителя, то есть модуля, который использует data "terraform_remote_state"
для доступа к этим выходам, это выглядит как простая карта, обозначенная областью:
data.terraform_remote_state.vpc.outputs.vpc_private_routing_table_ids[var.region]
Если вы создаете много разных объектов для каждого региона, вы можете собрать все их идентификаторы в один выход, что может быть удобнее для использования в других местах:
output "regions" {
value = {
us-east-1 = {
vpc_id = aws_vpc.us-east-1.id
subnet_ids = aws_subnet.us-east-1[*].id
private_route_table_id = aws_route_table.us-east-1.id
}
us-west-1 = {
vpc_id = aws_vpc.us-west-1.id
subnet_ids = aws_subnet.us-west-1[*].id
private_route_table_id = aws_route_table.us-west-1.id
}
}
}
... который будет выглядеть следующим образом в потребительском модуле:
data.terraform_remote_state.vpc.outputs.regions[var.region].private_route_table_id
В конечном итоге вы можете структурировать выходные значения так, как вам нравится, но я бы порекомендовал выбрать форму, которая оптимизирует для ясности в конфигурации, которая ссылается на данные. Обычно это означает, что ссылочные выражения должны быть максимально простыми, и в идеале избегать сложных выражений, таких как синтаксис строковых шаблонов, когда это возможно.