--- page_title: Data Sources description: >- A `data` block defines a data source that instructs Packer to query data defined outside of Packer for use in builds and sources. Learn how to configure `data` blocks to define data sources. --- ⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️ > [!IMPORTANT] > **Documentation Update:** Product documentation previously located in `/website` has moved to the [`hashicorp/web-unified-docs`](https://github.com/hashicorp/web-unified-docs) repository, where all product documentation is now centralized. Please make contributions directly to `web-unified-docs`, since changes to `/website` in this repository will not appear on developer.hashicorp.com. ⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️ # Data sources reference This topic describes how to use the `data` block to configure data sources in your HCL Packer templates. The `data` block instructs Packer to fetch or compute data for use in [`locals` blocks](/packer/docs/templates/hcl_templates/blocks/locals) and [`source` blocks](/packer/docs/templates/hcl_templates/blocks/source) so that builders can use of information defined outside of Packer. ## Using data sources A data source is declared using a data block, and the configuration looks like the following: ```hcl data "amazon-ami" "example" { filters = { virtualization-type = "hvm" name = "ubuntu/images/*ubuntu-xenial-16.04-amd64-server-*" root-device-type = "ebs" } owners = ["099720109477"] most_recent = true } ``` A `data` block requests that Packer read from a given data source (`"amazon-ami"`) and export the result under the given local name (`"example"`). The name is used to refer to this data source from elsewhere in the same Packer configuration. The data block creates a data instance of the given _type_ (first block label) and _name_ (second block label). The combination of the type and name must be unique within a configuration. Within the block (the `{ }`) is the configuration for the data instance. The configuration is dependent on the data source type, and is documented for each data source. For example the configuration of the `amazon-ami` data source can be found at [plugins/datasources/amazon/ami](/packer/plugins/datasources/amazon/ami#configuration-reference). A data source can output one or more attributes, which can be used by adding their key name to the data source unique identifier, like `data...`. The output from the `amazon-ami.example` above can be accessed as follows: Output data: ``` "data.amazon-ami.example" { id = "ami12345" name = "MyAMI" creation_date = "01/01/2021" owner = "123456789" owner_name = "Some Name" tags = {"tag1": "value"} } ``` Usage: ```hcl // in a local locals { source_ami_id = data.amazon-ami.example.id source_ami_name = data.amazon-ami.example.name } ``` ```hcl // in a source source "amazon-ebs" "basic-example" { source_ami = local.source_ami // ... } ``` ## Known limitations `@include 'datasources/local-dependency-limitation.mdx'` ## Related - The list of available data sources can be found in the [data sources](/packer/docs/datasources) section. - Create your own [custom data source](/packer/docs/plugins/creation/custom-datasources) !