问题描述
我有一个ARM模板,我想要转换国家名称(如“美国”),并且想要获得ISO 3166-1 alpha 2代码(如“ US”)。我将使用此转换后的值作为资源组的名称。我尝试使用条件转换“ if”,但是当Parametr“ CountryString”仅包含两个国家/地区时,可以使用此选项。我找不到包含两个以上国家的参数“ CountryObject”的解决方案。有办法吗?
{
"$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#","contentVersion": "1.0.0.1","parameters": {
"CountryString": {
"type": "string","metadata": { "Description": "Select a country from the list." },"defaultValue": "United States","allowedValues": [ "United States","Germany"]
},"CountryObject": {
"type": "object","defaultValue": {
"United States": "US","Germany": "DE","United Kingdom": "GB"
}
}
},"variables": {
"OutputString": {
"type": "string","value": "[if(equals('United States',parameters('CountryString')),'US','DE')]"
},"Outputobject": {
"type": "string",parameters('CountryObject')),"rgName": "[concat('rg-',variables('Outputobject').value,'-rgname')]"
},"resources": [
{
"type": "Microsoft.Resources/resourceGroups","apiVersion": "2019-08-01","location": "East Asia","name": "[variables('rgName')]","properties": {}
}],"outputs": {
"OutputString": {
"type": "string","value": "[variables('OutputString').value]"
},"value": "[variables('Outputobject').value]"
}
}}
解决方法
将if
视为哈希表,而不是使用CountryObject
语句。
"value": "[parameters('CountryObject')[parameters('CountryString')]]"
整个事情。
{
"$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#","contentVersion": "1.0.0.1","parameters": {
"CountryString": {
"type": "string","metadata": { "Description": "Select a country from the list." },"defaultValue": "United States","allowedValues": [ "United States","Germany" ]
},"CountryObject": {
"type": "object","defaultValue": {
"United States": "US","Germany": "DE","United Kingdom": "GB"
}
}
},"variables": {
"OutputString": {
"type": "string","value": "[parameters('CountryObject')[parameters('CountryString')]]"
} },"resources": [],"outputs": {
"OutputString": {
"type": "string","value": "[variables('OutputString').value]"
}
}
}
,
我使用的最终解决方案: 将参数“ CountryObject”替换为变量“ CountryObject”
{
"$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#","parameters": {
"CountryString": {
"type": "string","allowedValues": [
"United States","Germany","United Kingdom"
]
}
},"variables": {
"CountryObject": {
"type": "object","value": {
"United States": "US","United Kingdom": "GB"
}
},"OutputString": {
"type": "object","value": "[variables('CountryObject').value[parameters('CountryString')]]"
}
},"outputs": {
"OutputString": {
"type": "string","value": "[variables('OutputString').value]"
}
}}