繁体   English   中英

如何在 ARM 模板中使用 siteconfig 中的参数值?

[英]How to use parameter value inside the siteconfig in ARM template?

我有以下创建功能应用程序的代码:

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.1",
    "parameters": {
        "storage_account_name": {
            "type": "string",
            "defaultValue": "test"
        },
        "location": {
            "defaultValue": "[resourceGroup().location]",
            "type": "string"
        },
        "App_Plan_Name": {
            "type": "string",
            "defaultValue": "test1"
        },
        "Function_App_Name": {
            "type": "string",
            "defaultValue": "funapwp11"
        },
        "AI_Name": {
            "type": "string",
            "defaultValue": "appinsiwghts"
        },
        "Appsetting_For_Fun_App": {
            "type": "object",
            "defaultValue": {
                "client_id": "",
                "client_secret": "",
                "subscription_id": "",
                "tenant_id": "",
                "FUNCTIONS_EXTENSION_VERSION": "~4",
                "FUNCTIONS_WORKER_RUNTIME": "python"

            }
        }
    },
    "variables": {
        "unique_Storage_Name": "[concat(parameters('storage_account_name'),uniqueString(resourceGroup().id))]",
        //"Unique_App_Service_Name": "[concat(parameters('App_Service_Name'),uniqueString(resourceGroup().id))]",
        "Unique_App_Plan_Name": "[concat(parameters('App_Plan_Name'),uniqueString(resourceGroup().id))]",
        "Unique_Fun_App_Name": "[concat(parameters('Function_App_Name'),uniqueString(resourceGroup().id))]",
        "Unique_AI_Name": "[concat(parameters('AI_Name'),uniqueString(resourceGroup().id))]"

    },
    "resources": [
        {
            "type": "Microsoft.Web/sites",
            "apiVersion": "2022-03-01",
            "location": "[parameters('location')]",
            "name": "[variables('Unique_Fun_App_Name')]",
            "kind": "functionapp",
            "dependsOn": [
                "[resourceId('Microsoft.Web/serverfarms', variables('Unique_App_Plan_Name'))]",
                "[resourceId('Microsoft.Storage/storageAccounts',variables('unique_Storage_Name'))]",
                "[resourceId('Microsoft.Insights/components',variables('Unique_AI_Name'))]"
            ],
            "properties": {
                "serverFarmId": "[resourceId('Microsoft.Web/serverfarms',variables('Unique_App_Plan_Name'))]",
                "httpsOnly": true,
                "enabled": true,
                "adminEnabled": true,
                "sku": "Basic",
                "siteProperties": {
                    "properties": [
                        {
                            "name": "LinuxFxVersion",
                            "value": "Python|3.9"
                        },
                        {
                            "name": "WindowsFxVersion",
                            "value": null
                        }
                    ]
                },
                "siteConfig": {
                    "linuxFxVersion": "Python|3.9",
                    "alwaysOn": true,
                    "pythonVersion": "3.9",
                    "appSettings": [
                        {
                            "name": "APPINSIGHTS_INSTRUMENTATIONKEY",
                            "value": "[reference(resourceId('Microsoft.Insights/components', variables('Unique_AI_Name'))).InstrumentationKey]"
                        },
                        {
                            "name": "APPLICATIONINSIGHTS_CONNECTION_STRING",
                            "value": "[reference(resourceId('Microsoft.Insights/components',variables('Unique_AI_Name')),'2020-02-02-preview').ConnectionString]"

                        },
                        {
                            "name": "AzureWebJobsStorage",
                            "value": "[format('DefaultEndpointsProtocol=https;AccountName={0};EndpointSuffix={1};AccountKey={2}', variables('Unique_Storage_Name'), environment().suffixes.storage, listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('Unique_Storage_Name')), '2021-08-01').keys[0].value)]"
                        }


                    ]
                }
            }
        }
    ]

}

我想在properties >> siteConfig >> appSettings中使用Appsetting_For_Fun_App参数。

范围:

"Appsetting_For_Fun_App": {
                "type": "object",
                "defaultValue": {
                    "client_id": "",
                    "client_secret": "",
                    "subscription_id": "",
                    "tenant_id": "",
                    "FUNCTIONS_EXTENSION_VERSION": "~4",
                    "FUNCTIONS_WORKER_RUNTIME": "python"
    
                }
            }

我需要这样

"appSettings": [
                    {
                        "name": "[parameters('Appsetting_For_Fun_App')]",
                        "value": "[parameters('Appsetting_For_Fun_App')]"
                    },

我尝试了多种方法但没有运气。 可以参考问题: Azure资源管理器模板网站应用设置

我能想到的两个选择:

  1. 将参数格式化为对象数组 - 然后模板中不需要转换......
"parameters": {
    "Appsetting_For_Fun_App": {
        "type": "array",
        "defaultValue": [
            {
                "name": "client_id",
                "value": ""
            },
            {
                "name": "client_secret",
                "value": ""
            },
            {
                "name": "subscription_Id",
                "value": ""
            }                
        ]
    }

然后在网络应用程序上:

    "siteConfig": {
        "linuxFxVersion": "Python|3.9",
        "alwaysOn": true,
        "pythonVersion": "3.9",
        "appSettings": "[parameters('Appsettings_For_Fun_App')]"

但您也可以通过以下方式进行:

  1. 在模板中转换,最简单地使用变量来说明:
{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "myValues": {
      "type": "object",
      "defaultValue": {
        "setting1": "value1",
        "setting2": "value2",
        "setting3": "value3"
      }
    }
  },
  "variables": {
    "copy": [
      {
        "name": "foo",
        "count": "[length(items(parameters('myValues')))]",
        "input": {
          "name": "[items(parameters('myValues'))[copyIndex('foo')].key]",
          "value": "[items(parameters('myValues'))[copyIndex('foo')].value]"
        }
      }
    ]
  },
  "resources": [],
  "outputs": {
    "bar": {
      "type": "array",
      "value": "[variables('foo')]"
    }
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM