You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Terraform为AWS Config的approved-amis-by-tag配置多标签?

AWS Config APPROVED_AMIS_BY_TAG规则多标签配置报错解决

问题场景

使用Terraform部署AWS Config组织管理规则APPROVED_AMIS_BY_TAG时,配置多标签参数后执行terraform apply触发如下错误:

Error: error creating Config Organization Managed Rule (approved-amis-by-tag): InvalidParameterValueException: Blank spaces are not acceptable for input parameter: amisByTagKeyAndValue.
│
│ with aws_config_organization_managed_rule.approved-amis-by-tag,
│ on 07_config.tf line 102, in resource "aws_config_organization_managed_rule" "approved-amis-by-tag":
│ 102: resource "aws_config_organization_managed_rule" "approved-amis-by-tag" {

原配置代码:

# AWS Config Rule that checks if the AMIs used are in the list of compliant AMIs
resource "aws_config_organization_managed_rule" "approved-amis-by-tag" {

depends_on = [
  aws_config_configuration_recorder.config_recorder
]

name            = "approved-amis-by-tag"
rule_identifier = "APPROVED_AMIS_BY_TAG"

input_parameters = <<EOF
{
  "amisByTagKeyAndValue": {
    "approvedAmiLinux": "amazonLinux",
    "approvedAmiLinux2": "amazonLinux2",
    "approvedAmiUbuntu20.04": "Ubuntu20.04",
    "approvedAmiUbuntu22.04": "Ubuntu22.04"
  }
}
EOF

timeouts {
  create = "10m"
  delete = "10m"
  update = "10m"
  }
}

问题原因

报错根源是input_parameters使用EOF多行字符串时,JSON中的缩进空格被AWS Config判定为无效空白字符。APPROVED_AMIS_BY_TAG规则要求amisByTagKeyAndValue参数对应的JSON必须为无多余空白的紧凑格式。

解决方法

有两种可行的修正方式,推荐使用第二种:

方式1:手动压缩为单行JSON

直接将JSON内容压缩成一行,去掉所有缩进和换行:

input_parameters = "{\"amisByTagKeyAndValue\":{\"approvedAmiLinux\":\"amazonLinux\",\"approvedAmiLinux2\":\"amazonLinux2\",\"approvedAmiUbuntu20.04\":\"Ubuntu20.04\",\"approvedAmiUbuntu22.04\":\"Ubuntu22.04\"}}"

方式2:使用Terraform jsonencode函数(推荐)

利用Terraform内置的jsonencode函数自动生成符合要求的紧凑格式JSON,同时保持代码可读性:

input_parameters = jsonencode({
  amisByTagKeyAndValue = {
    approvedAmiLinux        = "amazonLinux"
    approvedAmiLinux2       = "amazonLinux2"
    approvedAmiUbuntu20.04  = "Ubuntu20.04"
    approvedAmiUbuntu22.04  = "Ubuntu22.04"
  }
})

jsonencode会自动处理JSON格式转换,确保输出字符串无多余空格,同时避免手动编写压缩JSON的繁琐和出错风险。


内容的提问来源于stack exchange,提问作者Benny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 08:30:26