如何通过CLI一次性向Cosmos DB添加多个来自不同VNet的子网
Cosmos DB 批量添加跨VNet子网的实现方案
az cosmosdb network-rule add 命令单次仅支持添加1个子网规则,你看到的--ids参数为Cosmos DB自身的资源ID参数,无法用于传入子网列表实现批量添加,可通过以下两种方案实现需求:
方案1:使用 az cosmosdb update 一次性配置所有子网规则(最快)
该命令的--virtual-network-rules参数支持传入空格分隔的多个子网完整资源ID,可一次性完成所有规则配置。
注意:该操作会直接覆盖Cosmos DB当前已有的所有虚拟网络规则,若需保留原有规则,请先查询现有规则后一并填入参数列表。
命令示例:
az cosmosdb update --name <你的Cosmos DB名称> --resource-group <资源组名称> --subscription <订阅ID> --virtual-network-rules "<子网1完整ID>" "<子网2完整ID>" "<子网3完整ID>" --ignore-missing-endpoint true
方案2:循环执行network-rule add命令(适用仅追加新规则场景)
如果需要保留Cosmos DB现有虚拟网络规则,仅追加新的跨VNet子网,可通过脚本循环批量执行添加命令:
Bash 脚本示例
# 填入所有需要添加的子网完整资源ID SUBNET_IDS=( "/subscriptions/xxx/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1" "/subscriptions/xxx/resourceGroups/rg2/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/subnet2" "/subscriptions/xxx/resourceGroups/rg3/providers/Microsoft.Network/virtualNetworks/vnet3/subnets/subnet3" ) for subnet_id in "${SUBNET_IDS[@]}" do az cosmosdb network-rule add \ --subnet $subnet_id \ --ignore-missing-endpoint true \ --name <你的Cosmos DB名称> \ --resource-group <资源组名称> \ --subscription <订阅ID> done
PowerShell 脚本示例
# 填入所有需要添加的子网完整资源ID $subnetIds = @( "/subscriptions/xxx/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1", "/subscriptions/xxx/resourceGroups/rg2/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/subnet2" ) foreach ($subnetId in $subnetIds) { az cosmosdb network-rule add ` --subnet $subnetId ` --ignore-missing-endpoint true ` --name <你的Cosmos DB名称> ` --resource-group <资源组名称> ` --subscription <订阅ID> }
内容的提问来源于stack exchange,提问作者prakashrajansakthivel
相关产品推荐
相关产品推荐

