首页 > 解决方案 > 如何在ARM模板azure中使用if else

问题描述

我在 c# 中创建了示例函数,它根据参数设置位置值。我想使用 arm 模板样式格式编写下面的表达式。

public static Main(string name)
{
    string location = string.Empty;
    if(name == "uksouth")
    {
        location = "UKS";
    }else if(name == "ukwest")
    {
        location = "UKE";
    }else if(name == "IndiaWest")
    {
        location = "INDW";
    }
    else {
        location = "INDS";
    }

}

我已经为一个匹配条件编写了这个,但我想根据用户资源组返回值。

"value": "[if(equals(resourceGroup().location,'uksouth'), 'UKS', 'EUS')]"

标签: azure-devopsazure-pipelinesarm-template

解决方案


尝试定义一个变量,它是一个像哈希表一样使用的对象。通过键名从对象中检索不同的属性,以键值对的形式访问属性。我在我的 ARM 模板中使用了与查找值非常相似的东西。

"variables" {
  "locationShorten": {
    "uksouth": "UKS",
    "ukwest": "UKE",
    "IndiaWest": "INDW",
    "IndiaSouth": "INDS"
  },
  "locationShort": "[variables('locationShorten')[resourceGroup().location]]"}

Microsoft 将对象的属性定义为键值对。“对象中的每个属性都由键和值组成。键和值用双引号括起来,并用冒号 (:) 分隔。” 来源:https ://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/data-types#objects

至于用于[]访问对象属性的文档,我再也找不到 JSON 了,但 BICEP 有。“您还可以使用 [] 语法来访问属性。” 来源:https ://docs.microsoft.com/en-us/azure/azure-resource-manager/bicep/data-types#objects


推荐阅读