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。刷新页面后,您可以看到发出了哪些请求。
我先有这个数据子句:
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。刷新页面后,您可以看到发出了哪些请求。