Reputation: 15466
I have a variable that defines the query parameters in my API Gateway resource. Every resource has a base set of default query parameters. Some resources have the base set plus an additional parameter.
# base set of query parameters that apply to all resources
variable "parameters_default" {
default = {
"method.request.querystring.brokerage" = false
"method.request.querystring.account_alias" = false
"method.request.querystring.start_date" = false
"method.request.querystring.end_date" = false
"method.request.querystring.valuation_date" = false
}
}
# additional query parameter that applies to only one resource
variable "parameters_special_resource" {
default = {
"method.request.querystring.brokerage" = false
"method.request.querystring.account_alias" = false
"method.request.querystring.start_date" = false
"method.request.querystring.end_date" = false
"method.request.querystring.valuation_date" = false
"method.request.querystring.top" = false
}
}
Instead of having to redefine all the baseline query parameters, I want to use the baseline to compose the second one. Something like this
# compose the parameters_special_resource variable using parameters_special_resource
variable "parameters_special_resource" {
# baseline parameters_special_resource
default = {
"method.request.querystring.top" = false
}
}
How is this done?
Upvotes: 1
Views: 212
Reputation: 238081
Its not possible to create dynamic variables. Instead you should use locals and merge
:
# base set of query parameters that apply to all resources
variable "parameters_default" {
default = {
"method.request.querystring.brokerage" = false
"method.request.querystring.account_alias" = false
"method.request.querystring.start_date" = false
"method.request.querystring.end_date" = false
"method.request.querystring.valuation_date" = false
}
}
# additional query parameter that applies to only one resource
variable "parameters_special_resource" {
default = {
"method.request.querystring.top" = false
}
}
locals {
# marge base and special paramters
parameters_special_resource = merge(var.parameters_default, var.parameters_special_resource)
}
Then you use local.parameters_special_resource
in your code.
Upvotes: 2