http provider/data 来源 - 懒惰还是渴望?

http provider/data source - lazy or eager?

我先有这个数据子句:

data "http" "json_pattern" {
  url = "${var.cloudwatch_event_pattern_json_url}"
}

变量将是这样的: https://raw.githubusercontent.com/alexakarpov/ak_terr/master/pattern.json

,即只是一个 JSON 对象,它是 CloudWatch

中事件的模式

然后,我有一个资源块:

resource "aws_cloudwatch_event_rule" "event_pattern_rule" {
  count         = "${var.cloudwatch_event_pattern_json_url == "" ? 0 : 1}"
  name          = "${var.name}-json-event-trigger"
  description   = "Event to trigger the execution of the lambda function: ${var.name}"
  event_pattern = "${data.http.json_pattern.body}"
}

我想知道的是 - 此 http 调用的发生次数与此文件的处理次数一样多,还是仅与

中的条件一样多

count = "..."

匹配?换句话说,http 调用是否会变得懒惰,仅在提供资源时执行(这里是 count == 1 的情况)?还是每次加载文件时都急切执行?听起来像是只有真正的大师才能回答的问题,而我才刚刚进入这个 IAC 地狱一周..

根据 Terraform documentation 数据源的状态将是 "updated during Terraform's 'refresh' phase, which by default runs prior to creating a plan." 所以这意味着它被调用一次

如果您想轻松地自己验证它,请创建一个 RequestBin 并在您的 Terraform 配置中使用给定的 URL。刷新页面后,您可以看到发出了哪些请求。