【发布时间】:2021-09-23 22:03:19
【问题描述】:
我正在 Terraform 版本 0.14.15 上使用 for_each 方法创建一些资源。该资源有一个属性 input_parameters,它将 JSON 格式的字符串作为其值。我正在使用单独的对象在地图变量中定义这个值。我指定为 JSON 格式的字符串的值,执行时出现错误,我需要声明一个字符串。任何有关修复此错误的见解都会有所帮助。下面是我声明资源和变量的方式。
资源
resource "aws_config_config_rule" "managed_rules" {
for_each = var.managed_rules
name = each.value.name
description = each.value.description
input_parameters = each.value.input_parameters
source {
owner = each.value.owner
source_identifier = each.value.source_identifier
}
depends_on = [aws_config_configuration_recorder.config_recorder]
}
变量
variable "managed_rules" {
type = map(object({
name = string
description = string
owner = string
source_identifier = string
# Is there a variable for strings in JSON format?
input_parameters = string
}))
default = {
"1" = {
name = "alb-http-to-https-redirection-check"
description = "Checks whether HTTP to HTTPS redirection is configured on all HTTP listeners of Application Load Balancers. The rule is NON_COMPLIANT if one or more HTTP listeners of Application Load Balancer do not have HTTP to HTTPS redirection configured."
owner = "AWS"
source_identifier = "ALB_HTTP_TO_HTTPS_REDIRECTION_CHECK"
input_parameters = {
"MaximumExecutionFrequency" : "TwentyFour_Hours",
}
}
错误
This default value is not compatible with the variable's type constraint:
element "2": attribute "input_parameters": string required.
使用 jsonencode 函数更新代码并将 input_parameters 更改为 any 后,这是错误:
This default value is not compatible with the variable's type constraint:
collection elements cannot be unified.
【问题讨论】:
-
试试jsonencode:
jsonencode(each.value.input_parameters)。 -
对于更新的问题:
input_parameters = jsonencode(each.value.input_parameters)inaws_config_config_rule。
标签: json string amazon-web-services terraform config