Basic Syntax of the Lookup Function
lookup(map name, key, default_value)
Based on the above syntax, the lookup function has three primary arguments.
- Map name: A map variable that contains the key-value pairs.
- Key: A key value that we want to retrieve from the map
- Default value: A default value that we intend to return if the map doesn’t contain the key.
Example-1
variable "env" { // key default = "test" } variable "allow_port" { // map default = { prod = ["80", "443"] rest = ["80", "443", "8080", "22"] } }
dynamic "ingress" { for_each = lookup(var.allow_port, var.env, var.allow_port["rest"]) content { from_port = ingress.value to_port = ingress.value protocol = "tcp" cidr_blocks = ["0.0.0.0/0"] } }
Example-2
# AMI Collection Map variable “ami_collection” { type = map(string) default = { “ubuntu” = “ami-00ae935ce6c2aa534” “amazon_linux” = “ami-00ae935ce6c2aa534” “rhel_sql” = “ami-0fd0947c3f88732f8” “windows_server_2019” = “ami-00ae935ce6c2aa534” “windows_server_2022” = “ami-0f96fbe09adbebdc9” } } # Selecting a available key (ubuntu) output “select_ami” { value = lookup(var.ami_collection, “ubuntu”, “ami-0de899d345371c9aa”) } # Selecting an unavailable key output “select_ami_default” { value = lookup(var.ami_collection, “ubuntu_server”, “ami-0de899d345371c9aa”) }