【发布时间】:2022-01-04 19:32:00
【问题描述】:
有什么方法可以将 Terraform 数据源输出作为输入提供给另一个 Terraform 文件
场景是,我有一个 terraform 代码来使用数据源获取特定标签(此处为 jenkins)的私有 IP 地址(此处为 3 个 IP 10.1.1.1,10.1.1.2,10.1.1.3)
data "aws_instances" "mytag" {
filter {
name = "tag:Application"
values = ["jenkins"]
}
}
output "output from aws" {
value = data.aws_instances.mytag_private_ips
}
每当我应用 terraform 时,在 下面的 metric-filter 代码应该能够从上面的代码中获取结果 IP,并使其在实时状态下可用(aws 控制台)
resource "aws_cloudwatch_log_metric_filter" "test" {
name = "test-metric-filter"
pattern = "[w1,w2,w3,w4!=\"*<IP1>*\"&&w4!=\"*<IP2>*\"&&w4!=\"*<IP3>*\",w5=\"*admin*\"]"
log_group_name = var.test_log_group_name
metric_transformation {
name ="test-metric-filter"
namespace = "General"
}
}
因此,aws 控制台中 metric 模式的最终结果应该如下所示
[w1,w2,w3,w4!="*10.1.1.1*"&&w4!="*10.1.1.2*"&&w4!="*10.1.1.3*",w5="*admin*"]
最终目标是每当生成新 IP 时,它将被填充为模式(在 aws-console 中),而无需更改指标过滤器代码。
感谢任何帮助,因为我在 terraform 上找不到任何精确的文档,允许我们使用数据源动态生成字符串
【问题讨论】:
-
这么少的代码为什么要两个文件?
标签: terraform amazon-cloudwatch cloudwatch-alarms