Azure:如何使用ARM模板安装指定的现有站点扩展?
ARM模板安装站点扩展的实现原理
你认为模板没有指定目标扩展,其实指定规则就隐藏在站点扩展资源的name字段中:
Azure站点扩展市场中的所有扩展都有全局唯一的包ID作为标识,你模板内Microsoft.Web/sites/siteextensions类型资源的name字段拼接的Microsoft.AspNetCore.AzureAppServices.SiteExtension,正是「ASP.NET Core Logging Integration」扩展的官方唯一ID。Azure资源管理器在处理部署请求时,会自动根据这个ID匹配扩展市场的对应安装包,自动安装到你指定的App Service实例中。
另外补充一个优化点:你当前模板里站点扩展的location写死为West Europe,建议改成和站点一致的[parameters('location')],避免跨区域部署时出现不兼容问题。
修改模板安装其他站点扩展的方法
只需要修改站点扩展资源name字段中的扩展ID部分即可,操作逻辑如下:
- 先获取目标扩展的唯一ID:可以先在Azure门户的App Service扩展页面手动安装一次目标扩展,再导出ARM模板就能看到对应的ID;也可以直接在Kudu控制台的扩展管理页查询到对应扩展的ID。
- 替换模板中
concat函数的第二个参数,把原有Microsoft.AspNetCore.AzureAppServices.SiteExtension替换为你要安装的扩展ID即可。
举个示例,如果你要安装Application Insights Agent扩展,它的ID为Microsoft.ApplicationInsights.AzureWebSites,对应资源的name字段修改为:
"name": "[concat(parameters('siteName'), '/Microsoft.ApplicationInsights.AzureWebSites')]"
注意保留dependsOn配置,确保App Service资源先创建完成再执行扩展安装,避免部署报错。
内容的提问来源于stack exchange,提问作者Claus Appel
相关产品推荐
相关产品推荐

