使用 ARM 模板部署资源

时间:2021-07-06 15:08:19

标签: azure azure-resource-manager arm-template

我有一个场景,我需要使用相同的应用服务计划在另一个资源组中部署资源(应用服务)。

应用服务计划驻留在另一个资源组中。

我试过这个,它给出了“应用服务计划未找到错误”。这是 Deployment.json 文件。

参考:https://docs.microsoft.com/en-us/azure/bot-service/bot-builder-deploy-az-cli?view=azure-bot-service-4.0&tabs=csharp#option-1-existing-app-service-plan

当我们尝试在同一资源组中部署应用程序而不创建新计划时,此部署 json 工作正常。

{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
    "appId": {
        "type": "string",
        "metadata": {
            "description": "Active Directory App ID, set as MicrosoftAppId in the Web App's Application Settings."
        }
    },
    "appSecret": {
        "type": "string",
        "metadata": {
            "description": "Active Directory App Password, set as MicrosoftAppPassword in the Web App's Application Settings. Defaults to \"\"."
        }
    },
    "botId": {
        "type": "string",
        "metadata": {
            "description": "The globally unique and immutable bot ID. Also used to configure the displayName of the bot, which is mutable."
        }
    },
    "botSku": {
        "defaultValue": "F0",
        "type": "string",
        "metadata": {
            "description": "The pricing tier of the Bot Service Registration. Acceptable values are F0 and S1."
        }
    },
    "newAppServicePlanName": {
        "type": "string",
        "defaultValue": "",
        "metadata": {
            "description": "The name of the new App Service Plan."
        }
    },
    "newAppServicePlanSku": {
        "type": "object",
        "defaultValue": {
            "name": "S1",
            "tier": "Standard",
            "size": "S1",
            "family": "S",
            "capacity": 1
        },
        "metadata": {
            "description": "The SKU of the App Service Plan. Defaults to Standard values."
        }
    },
    "appServicePlanLocation": {
        "type": "string",
        "metadata": {
            "description": "The location of the App Service Plan."
        }
    },
    "existingAppServicePlan": {
        "type": "string",
        "defaultValue": "",
        "metadata": {
            "description": "Name of the existing App Service Plan used to create the Web App for the bot."
        }
    },
    "newWebAppName": {
        "type": "string",
        "defaultValue": "",
        "metadata": {
            "description": "The globally unique name of the Web App. Defaults to the value passed in for \"botId\"."
        }
    }
},
"variables": {
    "defaultAppServicePlanName": "[if(empty(parameters('existingAppServicePlan')), 'createNewAppServicePlan', parameters('existingAppServicePlan'))]",
    "useExistingAppServicePlan": "[not(equals(variables('defaultAppServicePlanName'), 'createNewAppServicePlan'))]",
    "servicePlanName": "[if(variables('useExistingAppServicePlan'), parameters('existingAppServicePlan'), parameters('newAppServicePlanName'))]",
    "resourcesLocation": "[parameters('appServicePlanLocation')]",
    "webAppName": "[if(empty(parameters('newWebAppName')), parameters('botId'), parameters('newWebAppName'))]",
    "siteHost": "[concat(variables('webAppName'), '.azurewebsites.net')]",
    "botEndpoint": "[concat('https://', variables('siteHost'), '/api/messages')]"
},
"resources": [
    {
        "comments": "Create a new App Service Plan if no existing App Service Plan name was passed in.",
        "type": "Microsoft.Web/serverfarms",
        "condition": "[not(variables('useExistingAppServicePlan'))]",
        "name": "[variables('servicePlanName')]",
        "apiVersion": "2018-02-01",
        "location": "[variables('resourcesLocation')]",
        "sku": "[parameters('newAppServicePlanSku')]",
        "properties": {
            "name": "[variables('servicePlanName')]"
        }
    },
    {
        "comments": "Create a Web App using an App Service Plan",
        "type": "Microsoft.Web/sites",
        "apiVersion": "2015-08-01",
        "location": "[variables('resourcesLocation')]",
        "kind": "app",
        "dependsOn": [
            "[resourceId('Microsoft.Web/serverfarms', variables('servicePlanName'))]"
        ],
        "name": "[variables('webAppName')]",
        "properties": {
            "name": "[variables('webAppName')]",
            "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('servicePlanName'))]",
            "siteConfig": {
                "appSettings": [
                    {
                        "name": "WEBSITE_NODE_DEFAULT_VERSION",
                        "value": "10.14.1"
                    },
                    {
                        "name": "MicrosoftAppId",
                        "value": "[parameters('appId')]"
                    },
                    {
                        "name": "MicrosoftAppPassword",
                        "value": "[parameters('appSecret')]"
                    }
                ],
                "cors": {
                    "allowedOrigins": [
                        "https://botservice.hosting.portal.azure.net",
                        "https://hosting.onecloud.azure-test.net/"
                    ]
                }
            }
        }
    },
    {
        "apiVersion": "2017-12-01",
        "type": "Microsoft.BotService/botServices",
        "name": "[parameters('botId')]",
        "location": "global",
        "kind": "bot",
        "sku": {
            "name": "[parameters('botSku')]"
        },
        "properties": {
            "name": "[parameters('botId')]",
            "displayName": "[parameters('botId')]",
            "endpoint": "[variables('botEndpoint')]",
            "msaAppId": "[parameters('appId')]",
            "developerAppInsightsApplicationId": null,
            "developerAppInsightKey": null,
            "publishingCredentials": null,
            "storageResourceId": null
        },
        "dependsOn": [
            "[resourceId('Microsoft.Web/sites/', variables('webAppName'))]"
        ]
    }
]

}

1 个答案:

答案 0 :(得分:1)

在使用 resourceId 函数时,您必须根据 documentation 指定应用服务计划所在的资源组。