Resource Addressing

A resource address is a string that identifies zero or more resource instances in your overall configuration.

An address is made up of two parts:

[module path][resource spec]

In some contexts Terraform might allow for an incomplete resource address that only refers to a module as a whole, or that omits the index for a multi-instance resource. In those cases, the meaning depends on the context, so you'll need to refer to the documentation for the specific feature you are using which parses resource addresses.

Module path

A module path addresses a module within the tree of modules. It takes the form:

module.module_name[module index]

An address without a resource spec, i.e. module.foo applies to every resource within the module if a single module, or all instances of a module if a module has multiple instances. To address all resources of a particular module instance, include the module index in the address, such as module.foo[0].

If the module path is omitted, the address applies to the root module.

An example of the module keyword delineating between two modules that have multiple instances:

module.foo[0].module.bar["a"]

Resource spec

A resource spec addresses a specific resource instance in the selected module. It has the following syntax:

resource_type.resource_name[instance index]

Index values for Modules and Resources

The following specifications apply to index values on modules and resources with multiple instances:

Examples

count Example

Given a Terraform config that includes:

resource "aws_instance" "web" {
  # ...
  count = 4
}

An address like this:

aws_instance.web[3]

Refers to only the last instance in the config, and an address like this:

aws_instance.web

Refers to all four "web" instances.

for_each Example

Given a Terraform config that includes:

resource "aws_instance" "web" {
  # ...
  for_each = tomap({
    "terraform": "value1",
    "resource":  "value2",
    "indexing":  "value3",
    "example":   "value4",
  })
}

An address like this:

aws_instance.web["example"]

Refers to only the "example" instance in the config, and resolves to "value4".