如何使用 arm 模板部署附加到 VNet 的函数应用?
现在,我的 arm 模板很好地部署了一个基于 AppServicePlan 的函数应用,并在"站点"资源"属性"部分中设置了"vnetName"......但在部署后,对于任何 VNet,函数应用仍显示为"未配置"。然后,我可以进入门户,只需单击几下即可添加到所需的 VNet...但是为什么它不能通过 ARM 模板工作?有人可以提供示例手臂模板来执行此操作吗?
经过进一步审查,这仅通过 ARM 是不可能的。下面是将 Web 应用连接到 VNet 的说明:https://learn.microsoft.com/en-gb/azure/app-service-web/app-service-vnet-integration-powershell
旧答案:这是另一篇试图通过Web应用程序实现相同目标的帖子(功能建立在Web应用程序上(:https://stackoverflow.com/a/39518349/5915331
如果我必须根据 powershell 命令进行猜测,请尝试将子资源添加到名称为web
的config
类型的站点,类似于 github 部署的 arm 模板:https://github.com/MicrosoftDocs/azure-docs/blob/master/articles/app-service-web/app-service-web-arm-from-github-provision.md#web-app
然而,引擎盖下可能会发生一些魔术。
{
"name": "[parameters('siteName')]",
"type": "Microsoft.Web/sites"
"location": ...,
"apiVersion": ...,
"properties": ...,
"resources": [
"name": "web",
"type": "config",
"apiVersion": "2015-08-01",
"dependsOn": [
"[resourceId('Microsoft.Web/Sites', parameters('siteName'))]"
],
"properties": {
"vnetName": "[parameters('vnetName')]"
},
]
}
除了创建 VPN 包之外,我可以使用 ARM 执行所有操作 - 这就是仅设置资源属性和实际使应用正确连接到 VNET 之间的区别。
本文(https://learn.microsoft.com/en-gb/azure/app-service-web/app-service-vnet-integration-powershell(中的所有内容都可以轻松地从PowerShell转换为ARM,除了Get-AzureRmVpnClientPackage
假设,如果使用旧版 VNET,则可以通过 ARM 获取 VPN 客户端包 URL,因为旧版 VNET 资源提供程序支持该操作 (https://learn.microsoft.com/en-us/azure/active-directory/role-based-access-control-resource-provider-operations(:
Microsoft.ClassicNetwork/virtualNetworks/gateways/listPackage/action
ARM VNET 提供程序似乎没有