首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据以前使用R53创建的子健康检查创建计算的for_each健康检查

根据以前使用R53创建的子健康检查创建计算的for_each健康检查
EN

Stack Overflow用户
提问于 2022-03-10 08:27:02
回答 1查看 55关注 0票数 0

你好,堆栈溢出社区。

我有5个FQDN (myurl{1..5}.mydomain.com),需要为每个FQDN创建3次Route53健康检查(总计15次)。每个FQDN后面有两个IP,例如myurl1.mydomain.com有IP:123.123.123.123, 124.124.124.124。最终目标:

  • 2健康检查,每个IP用于特定的FQDN
  • 1计算的健康检查,该健康检查正在监视上述两个

第一点是通过以下方式完成的:

代码语言:javascript
复制
data "dns_a_record_set" "mywiz" {
  for_each = toset(var.urls)
  host     = "${each.value}.mydomain.com"
}

resource "aws_route53_health_check" "hc-1" {
  for_each          = data.dns_a_record_set.sort(mywiz)
  fqdn              = each.value["host"]
  ip_address        = each.value["addrs"][0]
  port              = "443"
  type              = "HTTPS"
  failure_threshold = "3"
  request_interval  = "30"
  tags = {
    "Name" = "r53-hc-gfp-${each.key}-1"
  }

  lifecycle {
    ignore_changes = [tags]
  }
}

resource "aws_route53_health_check" "hc-2" {
  #count             = length(var.urls)
  for_each          = data.dns_a_record_set.mywiz
  fqdn              = each.value["host"]
  ip_address        = each.value["addrs"][1]
  port              = "443"
  type              = "HTTPS"
  failure_threshold = "3"
  request_interval  = "30"
  tags = {
    "Name" = "r53-hc-gfp-${each.key}-2"
  }

  lifecycle {
    ignore_changes = [tags]
  }
}

产出如下:

代码语言:javascript
复制
# aws_route53_health_check.hc-1["myurl1"] will be created
  + resource "aws_route53_health_check" "hc-1" {
      + arn               = (known after apply)
      + disabled          = false
      + enable_sni        = (known after apply)
      + failure_threshold = 3
      + fqdn              = "myurl1.mydomain.com"
      + id                = (known after apply)
      + ip_address        = "123.123.123.123"
      + measure_latency   = false
      + port              = 443
      + request_interval  = 30
      + tags              = {
          + "Name" = "r53-hc-gfp-myurl1-1"
        }
      + tags_all          = {
          + "CreatedBy"    = "foobar"
          + "CreatedDate"  = "2022-03-10T07:48:05Z"
          + "LaunchSource" = "Terraform"
          + "Name"         = "r53-hc-gfp-myurl1-1"
          + "Notes"        = "Created for GFP"
        }
      + type              = "HTTPS"
    }

  # aws_route53_health_check.hc-2["myurl1"] will be created
  + resource "aws_route53_health_check" "hc-2" {
      + arn               = (known after apply)
      + disabled          = false
      + enable_sni        = (known after apply)
      + failure_threshold = 3
      + fqdn              = "myurl1.mydomain.com"
      + id                = (known after apply)
      + ip_address        = "124.124.124.124"
      + measure_latency   = false
      + port              = 443
      + request_interval  = 30
      + tags              = {
          + "Name" = "r53-hc-gfp-myurl1-2"
        }
      + tags_all          = {
          + "CreatedBy"    = "foobar"
          + "CreatedDate"  = "2022-03-10T07:48:05Z"
          + "LaunchSource" = "Terraform"
          + "Name"         = "r53-hc-gfp-myurl1-2"
          + "Notes"        = "Created for GFP"
        }
      + type              = "HTTPS"
    }

然而,我正在为经过计算的Route53健康检查而挣扎。如何构造计算的aws_route53_health_check资源,如何将正确的(对应于各个FQDN的)健康检查ids传递为child_healthchecks。我试过:

代码语言:javascript
复制
resource "aws_route53_health_check" "hc-status" {
  for_each               = aws_route53_health_check.hc-1
  type                   = "CALCULATED"
  failure_threshold      = "1"
  child_healthchecks     = [aws_route53_health_check.hc-1.id[each.key]
  child_health_threshold = "1"
  tags = {
    "Name" = "r53-hc-gfpstatus-${each.key}"
  }

  lifecycle {
    ignore_changes = [tags]
  }
}

这导致:

代码语言:javascript
复制
|Error: Missing resource instance key
│ 
│   on main.tf line 58, in resource "aws_route53_health_check" "hc-status":
│   58:   child_healthchecks     = [aws_route53_health_check.hc-1.id[each.key]]
│ 
│ Because aws_route53_health_check.hc-1 has "for_each" set, its attributes must be accessed
│ on specific instances.
│ 
│ For example, to correlate with indices of a referring resource, use:
│     aws_route53_health_check.hc-1[each.key]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-10 08:32:30

它应该是:

代码语言:javascript
复制
 child_healthchecks     = [aws_route53_health_check.hc-1[each.key].id]

代码语言:javascript
复制
child_healthchecks     = [aws_route53_health_check.hc-1.id[each.key]]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71420922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档