首页 > 解决方案 > 在 AWS terraforms aws_cloudwatch_event_rule 的 event_pattern 部分中传递变量

问题描述

我正在努力将列表变量传递给 terrform 中的事件模式。这是我目前所拥有的以及我正在努力的错误:

结构:

main.tf
variable.tf
input.tfvars
---modules
------cwr-cwt
---------main.tf
---------variable.tf

我的模块

resource "aws_cloudwatch_event_rule" "somename" {
  .
  .
  .
  event_pattern = <<PATTERN
{    "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}
            }
        }
    }
}
  PATTERN
}
.
.
.

这就是我从 main.tf 传递的内容......

module "somename" {
  source        = "./modules/cwr-cwt"
  resource_type = [ "AWS::EC2::Instance" ]
  sns_topic_arn = aws_sns_topic.sns-euwe01-expense-watcher-group-01.arn
  rule_name     = "somename"
  instance_type_list = [
    "t2.2xlarge","t3.2xlarge","t3a.2xlarge","t4g.2xlarge","m2.2xlarge","m2.4xlarge","m3.2xlarge","m4.2xlarge","m4.4xlarge",
    "m4.10xlarge","m4.16xlarge ","cr1.8xlarge","r3.2xlarge","r3.4xlarge","r3.8xlarge","r4.2xlarge","r4.8xlarge","r4.16xlarge",
    "r5.2xlarge","r5.4xlarge","r5.8xlarge","r5.12xlarge","r5.16xlarge","r5.24xlarge","r5.metal","r5a.2xlarge", "r5a.4xlarge",
    "r5a.8xlarge","r5a.12xlarge","r5a.16xlarge","r5a.24xlarge","r5b.2xlarge","r5b.4xlarge","r5b.8xlarge","r5b.12xlarge","r5b.16xlarge",
    "r5b.24xlarge","r5b.metal","r5d.2xlarge","r5d.4xlarge","r5d.8xlarge","m5ad.12xlarge","m5ad.16xlarge","m5a.16xlarge","m5a.24xlarge",
    "r5d.12xlarge","r5d.16xlarge","r5d.24xlarge","r5d.metal","r5ad.2xlarge","r5ad.4xlarge","r5ad.8xlarge","r5ad.12xlarge","x2gd.8xlarge",
    "r5ad.16xlarge","r5ad.24xlarge","r6g.2xlarge","r6g.4xlarge","r6g.8xlarge","r6g.12xlarge","r6g.16xlarge","r6gd.2xlarge","r6gd.4xlarge",
    "r6gd.8xlarge","r6gd.12xlarge","r6gd.16xlarge","x1.16xlarge","x1.32xlarge","x1e.2xlarge","x1e.4xlarge","g3.8xlarge","g3.16xlarge",
    "x1e.8xlarge","x1e.16xlarge","x1e.32xlarge","i2.2xlarge","i2.4xlarge","i2.8xlarge","i3.2xlarge","i3.4xlarge","i3.8xlarge",
    "i3.16xlarge","i3.metal","i3en.2xlarge","i3en.3xlarge","i3en.6xlarge","i3en.12xlarge","i3en.24xlarge","i3en.metal","hi1.4xlarge",
    "hs1.8xlarge" ,"c3.2xlarge","c3.4xlarge","c3.8xlarge","c4.2xlarge","c4.4xlarge" 
  ]
}

但是运行它会给我如下错误:

var.instance_type_list is list of string with n elements
Cannot include the given value in a string template: string required.

如果我不创建模块并直接使用它,那么它工作得很好...... :(

注意:我不想创建 json 字符串来传递给事件模式。

标签: amazon-web-servicesterraform

解决方案


推荐阅读