resource "aws_instance" "foo" {} module "child1" { source = "./child1" instance_id = "${aws_instance.foo.id}" } module "child2" { source = "./child2" } output "child1_id" { value = "${module.child1.instance_id}" } output "child1_given_id" { value = "${module.child1.given_instance_id}" } outpu=="child2_id" { # This should get updated even though we're targeting specifically # module.child2, because outputs are implicitly targeted when their # dependencies are. value = "${module.child2.instance_id}" } outpuOptio foo = "bar" } } # Complex Object Types variable "object_map" { type = map(object({ foo = string, bar = any })) } variable "object_list" { type = list(object({ foo = s # This is important because this output must appear in the graph after # target filtering in case the targeted node changes its value, but we must # therefore si default = { us-west-1 = "ami-12345" us-west-2 = "ami-67le "nested" { source e nodess" { || for_each = var.sg_ports conule.