←

Terraform Data Sources

Retrieve dynamic attributes from infrastructure


A Terraform data source is a read-only block that fetches information about existing resources or external systems (such as AWS or Azure) without creating, modifying, or managing them.

Unlike resources, which have a full lifecycle (Create, Read, Update, Delete), data sources only perform Read operations.

Syntax

Data sources are declared using a data block. The syntax consists of the data source type (provided by a Terraform provider) and a local reference name:

data "<PROVIDER_TYPE>" "<LOCAL_NAME>" {
  # Arguments used to query or filter the resource
}

Example

datasource.tf

data "aws_region" "current" {}

data "aws_availability_zones" "available" {}

outputs.tf

output "region" {
  value = data.aws_region.current.region
}

output "availability_zones" {
  value = data.aws_availability_zones.available.names
}
terraform plan
data.aws_availability_zones.available: Reading...
data.aws_region.current: Reading...
data.aws_region.current: Read complete after 0s [id=us-east-1]
data.aws_availability_zones.available: Read complete after 0s [id=us-east-1]

Changes to Outputs:
  + availability_zones = [
      + "us-east-1a",
      + "us-east-1b",
      + "us-east-1c",
    ]
  + region             = "us-east-1"