Data Source: aws_subnet_ids

aws_subnet_ids provides a list of ids for a vpc_id

This resource can be useful for getting back a list of subnet ids for a vpc.

Example Usage

The following shows outputing all cidr blocks for every subnet id in a vpc.

data "aws_subnet_ids" "example" {
  vpc_id = "${var.vpc_id}"
}

data "aws_subnet" "example" {
  count = "${length(data.aws_subnet_ids.example.ids)}"
  id = "${data.aws_subnet_ids.example.ids[count.index]}"
}

output "subnet_cidr_blocks" {
  value = ["${data.aws_subnet.example.*.cidr_block}"]
}

The following example retrieves a list of all subnets in a VPC with a custom tag of Tier set to a value of "Private" so that the aws_instance resource can loop through the subnets, putting instances across availability zones.

data "aws_subnet_ids" "private" {
  vpc_id = "${var.vpc_id}"
  tags {
    Tier = "Private"
  }
}

resource "aws_instance" "app" {
  count         = "3"
  ami           = "${var.ami}"
  instance_type = "t2.micro"
  subnet_id     = "${element(data.aws_subnet_ids.private.ids, count.index)}"
}

Argument Reference

  • vpc_id - (Required) The VPC ID that you want to filter from.

  • tags - (Optional) A mapping of tags, each pair of which must exactly match a pair on the desired subnets.

Attributes Reference

  • ids - A list of all the subnet ids found. This data source will fail if none are found.

© 2018 HashiCorp
Licensed under the MPL 2.0 License.
https://www.terraform.io/docs/providers/aws/d/subnet_ids.html