我们有一个使用Terraform 0.12.3系列任务来创建VM的发布管道,其中的一部分涉及创建自动标记资源的策略。下面是给出错误的相关Terraform代码:
# Assign tagging policy
resource "azurerm_policy_assignment" "tag_policy" {
count = length(var.tagNames)
name = "Apply${var.tagNames[count.index]}Tag"
scope = azurerm_resource_group.rsg.id
policy_definition_id = "/providers/Microsoft.Authorization/policyDefinitions/2a0e14a6-b0a6-4fab-991a-187a4f81c498"
description = "Assign policy for Tag '${var.tagNames[count.index]}' Value '${var.tagValues[count.index]}'"
display_name = "Apply${var.tagNames[count.index]}Tag"
parameters = <<PARAMETERS
{
"tagName": {
"value": "${var.tagNames[count.index]}"
},
"tagValue": {
"value": "${var.tagValues[count.index]}"
}
}
PARAMETERS
}(代码的“计数”部分是由于要应用3个标签,这是在variables.tf中定义的)
我们收到的错误是:
2020-04-17T15:40:29.5769619Z Error: cannot parse "policy_definition_id" as a Policy Definition ID: unable to parse Policy Definition ID "/providers/Microsoft.Authorization/policyDefinitions/2a0e14a6-b0a6-4fab-991a-187a4f81c498": unable to parse Remediation Scope ID: ID is empty
2020-04-17T15:40:29.5771388Z
2020-04-17T15:40:29.5771960Z on main.tf line 62, in resource "azurerm_policy_assignment" "tag_policy":
2020-04-17T15:40:29.5772430Z 62: resource "azurerm_policy_assignment" "tag_policy" {我已经仔细检查了策略定义ID是否正确:
Name:将标记及其值附加到资源
定义ID: /providers/Microsoft.Authorization/policyDefinitions/2a0e14a6-b0a6-4fab-991a-187a4f81c498
Hashicorp的azurerm_policy_assignment指南没有提到需要补救作用域ID,也没有设置一个标记来忽略它。
发布于 2020-04-23 15:58:07
对于这个问题,我认为对资源azurerm_policy_assignment的属性policy_definition_id的介绍误导了您。您可以看到它引用了属性的azurerm_policy_definition.example.id,但是当您输出该Id时,您将知道它是策略定义的资源id,而不是您提供的Id。所以policy_definition_id看起来像这样:
/subscriptions/xxxxxxxx/providers/Microsoft.Authorization/policyDefiniti
ons/my-policy-definitionhttps://stackoverflow.com/questions/61348666
复制相似问题