Terraform Tutorials: Variables – Data Type – Map

In this example, the instance_tags variable is defined with a type of map(string), and it is given a default value of { Name = "my-instance" }. The AWS provider is then configured to use the us-west-2 region.

The aws_instance resource is used to launch Amazon EC2 instances. The tags argument is used to assign tags to the instance, and it is set to the value of the instance_tags variable.

You can change the value of instance_tags by modifying the default value in the variable definition, or you can specify a different value when you run Terraform by using the -var flag. For example, if you want to launch an instance with tags { Name = "my-instance", Environment = "prod" }, you can run the following command:

$ terraform apply -var ‘instance_tags={ Name = “my-instance”, Environment = “prod” }’


Maps are a collection of string keys and string values. These can be useful for selecting values based on predefined parameters such as the server configuration by the monthly price.

We’ve replaced our sensitive strings with variables, but we still are hard-coding AMIs. Unfortunately, AMIs are specific to the region that is in use. One option is to just ask the user to input the proper AMI for the region, but Terraform can do better than that with maps.

dynamic lookup – The square-bracket index notation used here is an example of how the map type expression is accessed as a variable, with [var.region] referencing the var.amis declaration for dynamic lookup.

static value lookup – the map type expression can also use a static value lookup directly with var.amis[“us-east-1”].

Maps are a way to create variables that are lookup tables. An example will show this best. Let’s extract our AMIs into a map and add support for the us-west-2 region as well:

Rajesh Kumar
Follow me