我正在尝试对资源资源“aws_servicecatalog_provisioned_product”中的参数应用生命周期ignore_changes规则,如下所示。
resource "aws_servicecatalog_provisioned_product" "example" {
name = "example"
product_name = "Example product"
provisioning_artifact_name = "Example version"
provisioning_parameters {
key = "foo"
value = "bar"
}
provisioning_parameters {
key = "key2"
value = lookup(var.parameter_group, "key2", "test2")
}
provisioning_parameters {
key = "key3"
value = "test3"
}
tags = {
foo = "bar"
}
lifecycle {
ignore_changes = [
tags["foo"],
aws_servicecatalog_provisioned_product.provisioning_parameters.example["key2"]
]
}
}
variable parameter_group {
description = "Parameters map required for modules.
type = map(any)
default = {}
}
当我执行计划时我得到低于错误
│ Error: Unsupported attribute
│
│ on modules/example_provision/main.tf line 28, in resource "aws_servicecatalog_provisioned_product" "example":
│ 28: aws_servicecatalog_provisioned_product.provisioning_parameters.example["key2"]
│
│ This object has no argument, nested block, or exported attribute named "aws_servicecatalog_provisioned_product".
我想忽略对此参数值所做的更改。标签上的忽略工作正常,但是当我添加第二行 aws_servicecatalog_provisioned_product.provisioning_parameters.example["key2"] 时,错误就开始出现。
在这里寻找建议/帮助:)
Regards
ignore_changes
只能忽略对其声明的同一资源的配置的更改,因此您只需命名要忽略的参数,而不是资源类型或资源名称:
lifecycle {
ignore_changes = [
tags["foo"],
provisioning_parameters,
]
}
The provisioning_parameters
块类型似乎没有表示为映射(provisioning_parameter
块的标题中没有标签),因此您将无法通过名称引用特定块。
但是,提供程序确实将其声明为对象列表,因此我认为您将能够通过其索引忽略特定项目,其中索引按声明顺序分配。因此,在您当前的示例中key = "key2"
将具有索引 1,因为它是 Terraform 从零开始计数的第二个块:
lifecycle {
ignore_changes = [
tags["foo"],
provisioning_parameters[1],
]
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)