"Validation Error" 尝试 运行 `terraform apply`
"Validation Error" when trying to run `terraform apply`
我正在尝试创建以下资源:
resource "newrelic_alert_policy" "rpm_production_alert_policy" {
name = "RPM (Production) Alert Policy (Terraform)"
incident_preference = "PER_CONDITION"
}
resource "newrelic_alert_channel" "rpm_production_slack" {
name = "RPM Production Slack (Terraform)"
type = "slack"
config {
channel = "rpm-terrarelic"
url = "URLGOESHERE (obfuscated)"
}
}
resource "newrelic_alert_policy_channel" "rpm_production_alert_policy_slack" {
policy_id = newrelic_alert_policy.rpm_production_alert_policy.id
channel_ids = [
newrelic_alert_channel.rpm_production_slack.id
]
}
resource "newrelic_nrql_alert_condition" "median_duration" {
policy_id = newrelic_alert_policy.rpm_production_alert_policy.id
name = "median_duration"
description = "Alert when transactions are taking too long (this is a test description)"
nrql {
query = "SELECT median(duration) from Transaction where team = 'rpm' facet name since 1 month ago limit 500"
evaluation_offset = 3
}
critical {
operator = "above"
threshold = 2
threshold_duration = 60
threshold_occurrences = "AT_LEAST_ONCE"
}
violation_time_limit_seconds = 3600
value_function = "single_value"
}
当我使用 New Relic API 键和 -var-file
标志注释掉 newrelic_nrql_alert_condition
资源和 运行 terraform apply
时,资源已成功创建.但是,当我取消注释 newrelic_nrql_alert_condition
资源并重新 运行 命令时,出现以下错误:
newrelic_nrql_alert_condition.median_duration: Creating...
╷
│ Error: Validation Error
│
│ with newrelic_nrql_alert_condition.median_duration,
│ on foobar.tf line 22, in resource "newrelic_nrql_alert_condition" "median_duration":
│ 22: resource "newrelic_nrql_alert_condition" "median_duration" {
│
╵
最后一行(22: resource "newrelic_nrql_alert_condition" "median_duration" {
)中的{
有下划线,暗示这是验证错误的地方,但我没有看到这个资源声明和相同的声明之间有任何差异一个对于某些关键字具有不同值的错误消息,例如 nrql.query
,因此错误消息从表面上看似乎没有太大帮助。
我为资源的 name
参数尝试了不同的值,认为 New Relic 中的警报条件可能存在唯一性约束,但这没有用。
我尝试将有问题的资源块移动到文件的顶部,以防错误是由于文件中较早的语法问题引起的红鲱鱼,但随后我看到了相同的错误消息,但引用了行1 而不是第 22 行。这告诉我问题确实出在这个资源块上,错误不是转移注意力。
我用 Google 搜索了可以解释不同类型的验证错误的文档,但我找不到任何文档。
谁能看出我做错了什么?
编辑:
当我 运行 terraform validate
这个模块时,我收到消息 Success! The configuration is valid.
.
在研究 New Relic Terraform Provider GitHub page 中的当前问题和已关闭问题时,我发现可以传递 TF_LOG
标志以获得更多 g运行ular 日志记录。通过此标志并发现 2.21.0 版本的日志详细信息不足后,我发现 gem 的 2.29.0 版本具有更多 g运行ular 日志详细信息。我再次升级并通过标志,发现传递给警报条件的 NRQL 查询不能包含 LIMIT
子句。我删除了我包含的那个,然后重新 运行 terraform apply
,它工作正常。
我正在尝试创建以下资源:
resource "newrelic_alert_policy" "rpm_production_alert_policy" {
name = "RPM (Production) Alert Policy (Terraform)"
incident_preference = "PER_CONDITION"
}
resource "newrelic_alert_channel" "rpm_production_slack" {
name = "RPM Production Slack (Terraform)"
type = "slack"
config {
channel = "rpm-terrarelic"
url = "URLGOESHERE (obfuscated)"
}
}
resource "newrelic_alert_policy_channel" "rpm_production_alert_policy_slack" {
policy_id = newrelic_alert_policy.rpm_production_alert_policy.id
channel_ids = [
newrelic_alert_channel.rpm_production_slack.id
]
}
resource "newrelic_nrql_alert_condition" "median_duration" {
policy_id = newrelic_alert_policy.rpm_production_alert_policy.id
name = "median_duration"
description = "Alert when transactions are taking too long (this is a test description)"
nrql {
query = "SELECT median(duration) from Transaction where team = 'rpm' facet name since 1 month ago limit 500"
evaluation_offset = 3
}
critical {
operator = "above"
threshold = 2
threshold_duration = 60
threshold_occurrences = "AT_LEAST_ONCE"
}
violation_time_limit_seconds = 3600
value_function = "single_value"
}
当我使用 New Relic API 键和 -var-file
标志注释掉 newrelic_nrql_alert_condition
资源和 运行 terraform apply
时,资源已成功创建.但是,当我取消注释 newrelic_nrql_alert_condition
资源并重新 运行 命令时,出现以下错误:
newrelic_nrql_alert_condition.median_duration: Creating...
╷
│ Error: Validation Error
│
│ with newrelic_nrql_alert_condition.median_duration,
│ on foobar.tf line 22, in resource "newrelic_nrql_alert_condition" "median_duration":
│ 22: resource "newrelic_nrql_alert_condition" "median_duration" {
│
╵
最后一行(22: resource "newrelic_nrql_alert_condition" "median_duration" {
)中的{
有下划线,暗示这是验证错误的地方,但我没有看到这个资源声明和相同的声明之间有任何差异一个对于某些关键字具有不同值的错误消息,例如 nrql.query
,因此错误消息从表面上看似乎没有太大帮助。
我为资源的 name
参数尝试了不同的值,认为 New Relic 中的警报条件可能存在唯一性约束,但这没有用。
我尝试将有问题的资源块移动到文件的顶部,以防错误是由于文件中较早的语法问题引起的红鲱鱼,但随后我看到了相同的错误消息,但引用了行1 而不是第 22 行。这告诉我问题确实出在这个资源块上,错误不是转移注意力。
我用 Google 搜索了可以解释不同类型的验证错误的文档,但我找不到任何文档。
谁能看出我做错了什么?
编辑:
当我 运行 terraform validate
这个模块时,我收到消息 Success! The configuration is valid.
.
在研究 New Relic Terraform Provider GitHub page 中的当前问题和已关闭问题时,我发现可以传递 TF_LOG
标志以获得更多 g运行ular 日志记录。通过此标志并发现 2.21.0 版本的日志详细信息不足后,我发现 gem 的 2.29.0 版本具有更多 g运行ular 日志详细信息。我再次升级并通过标志,发现传递给警报条件的 NRQL 查询不能包含 LIMIT
子句。我删除了我包含的那个,然后重新 运行 terraform apply
,它工作正常。