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

Terraform中aws_cloudwatch_event_rule的event_pattern传列表变量报错

Terraform列表类型变量传入aws_cloudwatch_event_rule的event_pattern配置解决方案

报错原因

使用HEREDOC字符串模板直接嵌入列表类型变量时,Terraform无法自动将列表类型转换为符合JSON语法的字符串片段,因此抛出「需要字符串类型」的报错。

解决方案

直接使用Terraform内置的jsonencode函数生成整个event_pattern配置,不需要手动拼接JSON字符串,该函数会自动将Terraform原生数据结构转换为合法的JSON格式,天然支持列表、布尔、数字等多种类型变量的传入。

模块内配置修改示例

将原来的HEREDOC格式的event_pattern替换为以下配置即可:

resource "aws_cloudwatch_event_rule" "somename" {
  # 其余原有配置保持不变
  event_pattern = jsonencode({
    source = [
      "aws.config"
    ],
    "detail-type" = [
      "Config Configuration Item Change"
    ],
    detail = {
      messageType = [
        "ConfigurationItemChangeNotification"
      ],
      configurationItem = {
        resourceType = var.resource_type,
        configurationItemStatus = [
          "ResourceDiscovered"
        ],
        configuration = {
          instanceType = var.instance_type_list
        }
      }
    }
  })
}

方案优势

  1. 无需手动处理JSON语法的引号、逗号、转义等问题,jsonencode会自动生成合法JSON,避免语法错误
  2. 直接兼容Terraform所有原生数据类型的变量传入,无需额外做类型转换
  3. 配置结构可读性更高,变量引用逻辑清晰,后续维护成本低

未封装模块时可正常运行,是因为直接把列表值硬编码在JSON片段中,没有触发变量的类型转换逻辑,因此不会报错。

内容的提问来源于stack exchange,提问作者Vijay Vasudevbhai Gurunanee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:09:03