无现有代码时,如何用ARM模板为ADLS v2存储账户加专用终结点?
为现有ADLS v2存储账户添加专用终结点的ARM模板实现方法
1. 安全导出现有存储账户配置(避免遗漏)
直接从Azure门户导出存储账户的模板是可靠方式,操作步骤:
- 找到目标ADLS v2存储账户,进入左侧菜单「自动化」->「导出模板」
- 导出的模板默认包含存储账户所有现有配置(防火墙规则、虚拟网络设置等),将其保存为参考即可,无需直接用它做全量部署,仅用来核对后续自定义模板是否会影响现有配置
2. 编写增量部署的专用终结点模板
ARM默认采用增量部署模式,只会添加新资源/配置,不会覆盖现有存储账户的防火墙、网络规则等设置。以下是核心模板示例:
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "storageAccountName": { "type": "string", "metadata": { "description": "现有ADLS v2存储账户名称" } }, "privateEndpointName": { "type": "string", "metadata": { "description": "要创建的专用终结点名称" } }, "virtualNetworkName": { "type": "string", "metadata": { "description": "要关联的虚拟网络名称" } }, "subnetName": { "type": "string", "metadata": { "description": "要部署专用终结点的子网名称" } }, "resourceGroupName": { "type": "string", "metadata": { "description": "存储账户所在资源组名称" } } }, "resources": [ { "type": "Microsoft.Network/privateEndpoints", "apiVersion": "2023-05-01", "name": "[parameters('privateEndpointName')]", "location": "[resourceGroup().location]", "properties": { "subnet": { "id": "[resourceId(parameters('resourceGroupName'), 'Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworkName'), parameters('subnetName'))]" }, "privateLinkServiceConnections": [ { "name": "[concat(parameters('privateEndpointName'), '-connection')]", "properties": { "privateLinkServiceId": "[resourceId(parameters('resourceGroupName'), 'Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]", "groupIds": ["dfs"] // ADLS v2对应的子资源是dfs } } ] } } ] }
如果需要关联专用DNS区域以确保内网解析,可在resources里添加以下资源:
{ "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups", "apiVersion": "2023-05-01", "name": "[concat(parameters('privateEndpointName'), '/default')]", "dependsOn": [ "[resourceId('Microsoft.Network/privateEndpoints', parameters('privateEndpointName'))]" ], "properties": { "privateDnsZoneConfigs": [ { "name": "storage", "properties": { "privateDnsZoneId": "[resourceId('Microsoft.Network/privateDnsZones', 'privatelink.dfs.core.windows.net')]" } } ] } }
3. 提前验证部署影响
部署前用az deployment group what-if命令预览变更,确认只会添加专用终结点,不会修改现有存储账户的任何配置:
az deployment group what-if --resource-group <你的资源组名称> --template-file <模板文件路径> --parameters storageAccountName=<存储账户名> privateEndpointName=<终结点名> virtualNetworkName=<虚拟网络名> subnetName=<子网名>
若输出显示仅添加新资源,无现有存储账户的修改操作,即可放心部署。
4. 执行部署
用Azure CLI执行部署:
az deployment group create --resource-group <你的资源组名称> --template-file <模板文件路径> --parameters storageAccountName=<存储账户名> privateEndpointName=<终结点名> virtualNetworkName=<虚拟网络名> subnetName=<子网名>
也可通过Azure门户的「部署自定义模板」功能上传模板完成部署。
内容的提问来源于stack exchange,提问作者mac
相关产品推荐
相关产品推荐

