请考虑以下情形:
- 一个名为的资源组
rg-foo
,在以下位置创建switzerlandnorth
- 一个虚拟网络称为
vnet-switzerland-north
持有,一个子网default
也称为位置switzerlandnorth
- 提到的 vnet 是另一个资源组的一部分,
rg-vnets
名为westeurope
现在我想创建一个 NIC 并将其连接到子网default
。所以我做了以下事情:
az network nic create --name nicfoo --subnet default --vnet-name vnet-switzerland-north --resource-group rg-foo
但其结果是……
BadRequestError:资源 /subscriptions/subscription-guid/resourceGroups/rg-foo/providers/Microsoft。资源 /subscriptions/subscription-guid/resourceGroups/rg-foo/providers/Microsoft.Network/networkInterfaces/nicfoo 引用的 Network/virtualNetworks/vnet-switzerland-north/subnets/default 未找到。请确保引用的资源存在,并且两个资源都位于同一区域。
我就是搞不懂这个错误信息。当然,虚拟网络和子网是存在的,我还要再三检查它们的位置。即使我添加了参数--location
并明确说明我希望网卡位于同一区域,也会出现同样的错误。
提供这样的 id 也不会带来任何改变。
subnetid=$(az network vnet subnet show --vnet-name vnet-switzerland-north --name default --resource-group rg-vnets --output tsv --query [id])
az network nic create --name nicfoo --subnet $subnetid
我在这里做错了什么?
编辑
- 更新到最新的 Azure CLI 版本 (2.13.0) 未带来任何变化
- 我能够通过 Azure 门户创建网卡,没有任何问题
如果我创建另一个 test-vnet (@ switzerlandnorth
) 并将其放入 rg-foo (@ switzerlandnorth
),那么我就能够使用前面提到的参数在该 rg 中创建一个 nic。看来 Azure CLI 不喜欢rg-vnets
中的事实westeurope
。
编辑
同样有趣的是它可以与 Azure PowerShell 兼容。
$vnet = Get-AzVirtualNetwork -Name vnet-switzerland-north
$subnet = Get-AzVirtualNetworkSubnetConfig -Name default -VirtualNetwork $vnet
$nic = New-AzNetworkInterface -Name nicfoo -ResourceGroupName rg-foo -Subnet $subnet -Location switzerlandnorth
答案1
您无法在与要连接的 vNet/Subnet 不同的区域中创建网卡,它们必须位于同一区域。由于您未在 Azure CLI 命令中指定位置,因此它采用资源组西欧的位置,从而导致此问题。