多名称模式和参数定义

Multiple Name Pattern and Parameter definition

我制定了一项政策来监控资源的命名约定。我们有一个特定的指导方针,提供了一些变化,我想我已经准确地抓住了它。

以此为样本

https://docs.microsoft.com/en-us/azure/governance/policy/samples/allow-multiple-name-patterns

我想出了以下我认为可行的方法。问题是当我去部署它时,Azure Policy api 说我定义了参数,但它们没有被使用,很明显它们被使用了。寻求有关使用参数创建多名称模式的帮助,如果可能的话。

    "properties": {
        "displayName": "Match multiple name patterns.",
        "description": "Allows one of multiple naming patterns for resources.",
        "mode": "Indexed",
        "parameters": {
            "buName": {
               "type": "String",
               "metadata": {
                  "description": "Abbreviated Business Unit / i.e. USNR, SHSD, MAXD"
               }
            },
            "regionShortCode": {
               "type": "String",
               "metadata": {
                  "description": "Shortcode for the region / i.e. CUS, NCU, EUS"
               }
            },
            "environmentShortCode": {
                "type": "String",
                "metadata": {
                   "description": "Environment code / i.e. D (dev), U (uat), P (prod)"
                }
             }
         },
        "policyRule": {
            "if": {
                "allOf": [
                    {
                        "not": {
                            "field": "name",
                            "match": "[parameters('buName')]-[parameters('regionShortCode')]-[parameters('environmentShortCode')]-???-###"
                        }
                    },
                    {
                        "not": {
                            "field": "name",
                            "match": "[parameters('buName')]-[parameters('regionShortCode')]-[parameters('environmentShortCode')]-???"
                        }
                    },
                    {
                        "not": {
                            "field": "name",
                            "match": "[parameters('regionShortCode')]???[parameters('environmentShortCode')]##"
                        }
                    },
                    {
                        "not": {
                            "field": "name",
                            "match": "[parameters('regionShortCode')]???[parameters('environmentShortCode')]###"
                        }
                    }
                ]
            },
            "then": {
                "effect": "audit"
            }
        }
    }
} ```

您遇到的错误是在分配时发生的吗?

另外,对于你使用的参数?是否有用户必须使用的定义列表?如果它只是一个模式约定,比如 bus 它是一个 4 个字母的名称,那么您应该使用通配符。

请记住,在分配时您必须指定每个参数。

你应该只用一次括号并将所有内容连接在一起。尝试使用此方法:[concat(parameters('buName'), '-', parameters('regionShortCode'), '-', parameters('environmentShortCode'), '-???-# ##')]