如果Azure存储生命周期管理中的参数为空,则跳过规则创建

时间:2020-06-14 06:11:07

标签: azure azure-blob-storage

如果由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')]" }
                      }
                    }
                  }
                }
              ]

1 个答案:

答案 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的这篇文章。