如果由parameter.json文件提供的参数在ARM模板中为空,我想跳过删除规则的创建。该如何实现?
"rules": [
{
"name": "ruleDefault",
"enabled": true,
"type": "Lifecycle",
"definition": {
"filters": {
"blobTypes": [ "blockBlob" ],
"prefixMatch": [ "container1/foo" ]
},
"actions": {
"baseBlob": {
"tierToCool": {
"daysAfterModificationGreaterThan": "[parameters('tierToCool')]"
},
"tierToArchive": {
"daysAfterModificationGreaterThan": "[parameters('tierToArchive')]"
},
"delete": {
"daysAfterModificationGreaterThan": "[parameters('delete')]"
}
},
"snapshot": {
"delete": { "daysAfterCreationGreaterThan": "[parameters('snapshot')]" }
}
}
}
}
]
答案 0 :(得分:0)
条件逻辑有两种类型。
第一个也是最常见的是condition
键。该密钥位于资源块中,该资源块提供的值可以评估为true或false。 如果满足条件,将创建资源。如果不是,则将被跳过。
"condition": "[not(empty(parameters('delete')))]"
第二个称为内联条件逻辑,它非常强大并且使用简单的语法:
[if(condition, true value, false value)]
在条件键之外使用内联逻辑。内联逻辑将检查“ delete”参数是否为空,如果为空,则将json设置为null,这基本上会忽略该值。如果“ delte”参数不为空,它将规则分配给daysAfterModificationGreaterThan
。
"daysAfterModificationGreaterThan": "[if(equals(parameters('delete'), ''), json('null'),parameters('delete'))]"
有关更多详细信息,请参阅有关ARM Template – Conditional Logic和此one的这篇文章。