Terraform 变量组合
Terraform Variable Composition
我在 API 网关资源中有一个定义查询参数的变量。每个资源都有一组基本的默认查询参数。某些资源具有基本集和附加参数。
# 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
}
}
我不想重新定义所有基线查询参数,而是想使用基线来组成第二个查询参数。像这样
# compose the parameters_special_resource variable using parameters_special_resource
variable "parameters_special_resource" {
# baseline parameters_special_resource
default = {
"method.request.querystring.top" = false
}
}
这是怎么做到的?
无法创建动态变量。相反,您应该使用 locals 和 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)
}
然后在代码中使用 local.parameters_special_resource
。
我在 API 网关资源中有一个定义查询参数的变量。每个资源都有一组基本的默认查询参数。某些资源具有基本集和附加参数。
# 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
}
}
我不想重新定义所有基线查询参数,而是想使用基线来组成第二个查询参数。像这样
# compose the parameters_special_resource variable using parameters_special_resource
variable "parameters_special_resource" {
# baseline parameters_special_resource
default = {
"method.request.querystring.top" = false
}
}
这是怎么做到的?
无法创建动态变量。相反,您应该使用 locals 和 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)
}
然后在代码中使用 local.parameters_special_resource
。