从 'VirtualNetworkPeering 对象中提取返回值
Extract Returned values from 'VirtualNetworkPeering object
如何提取从对等虚拟网络列表返回的属性值。
我执行了这个命令,我需要提取网络 ID
list_all = network_client.virtual_network_peerings.list(
GROUP_NAME,
VNET_NAME
)
对于 list_all 中的同行:
打印(对等)
我从上面的打印中得到这个值:
{'additional_properties': {'type': 'Microsoft.Network/virtualNetworks/virtualNetworkPeerings'},
'id': '/subscriptions/c70b9b-efd6-497d-98d8-e1e1d497425/resourceGroups/azure-sample-group-virtual-machines/providers/Microsoft.Network/virtualNetworks/azure-sample-vnet/virtualNetworkPeerings/sample-vnetpeer',
'allow_virtual_network_access': True,
'allow_forwarded_traffic': True,
'allow_gateway_transit': False,
'use_remote_gateways': False,
'remote_virtual_network': <azure.mgmt.network.v2018_08_01.models.sub_resource_py3.SubResource object at 0x048D6950>,
'remote_address_space': <azure.mgmt.network.v2018_08_01.models.address_space_py3.AddressSpace object at 0x048D68D0>,
'peering_state': 'Initiated',
'provisioning_state': 'Succeeded',
'name': 'sample-vnetpeer',
'etag': 'W/"653f7f94-3c4e-4275-bfdf-0bbbd9beb6e4"'}
我怎样才能得到这个值"remote_virtual_network"?
'remote_virtual_network':,
'remote_address_space':
我会试试这个然后回来:
此命令类似于 Azure PowerShell 上的 "get-azurermvirtualnetworkpeering -ResourceGroupName -VirtualNetworkName -Name"。
remote_virtual_network 你没有。仅当您启用了远程网关并且对等方将了解您尝试连接的远程(内部部署站点)的 IP 地址时,您才会获得此信息。
要获得此值,请在 Vnet 中部署一个网关并将其连接到 Say "Vnet-S2S-test",并在其中部署一个网关。
一次,Vnet 之间的站点到站点启动。您可以执行该命令,您应该会看到那些填充有本地网络网关详细信息的字段。
我的感觉是,您的问题实际上更像是 Python 问题,而不是 Azure 问题。假设在您的应用程序中此字段设置了值,那么 remote_virtual_network
是一个 SubResource
意味着它只有一个属性:id
for peer in list_all:
remote_virtual_network_id = peer.remote_virtual_network.id
这个家伙是一个真正的虚拟网络,所以如果你想了解它的详细信息,你需要通过 network_client.virtual_networks.get
获取它:
https://docs.microsoft.com/en-us/python/api/azure-mgmt-network/azure.mgmt.network.v2018_08_01.operations.virtualnetworksoperations?view=azure-python#get
棘手的部分是您获得了一个 ID,但 VNet 会要求提供 RG 名称和 VNet 名称,您可以为此使用 ARM ID 解析器:
如何提取从对等虚拟网络列表返回的属性值。 我执行了这个命令,我需要提取网络 ID
list_all = network_client.virtual_network_peerings.list(
GROUP_NAME,
VNET_NAME
)
对于 list_all 中的同行:
打印(对等)
我从上面的打印中得到这个值:
{'additional_properties': {'type': 'Microsoft.Network/virtualNetworks/virtualNetworkPeerings'},
'id': '/subscriptions/c70b9b-efd6-497d-98d8-e1e1d497425/resourceGroups/azure-sample-group-virtual-machines/providers/Microsoft.Network/virtualNetworks/azure-sample-vnet/virtualNetworkPeerings/sample-vnetpeer',
'allow_virtual_network_access': True,
'allow_forwarded_traffic': True,
'allow_gateway_transit': False,
'use_remote_gateways': False,
'remote_virtual_network': <azure.mgmt.network.v2018_08_01.models.sub_resource_py3.SubResource object at 0x048D6950>,
'remote_address_space': <azure.mgmt.network.v2018_08_01.models.address_space_py3.AddressSpace object at 0x048D68D0>,
'peering_state': 'Initiated',
'provisioning_state': 'Succeeded',
'name': 'sample-vnetpeer',
'etag': 'W/"653f7f94-3c4e-4275-bfdf-0bbbd9beb6e4"'}
我怎样才能得到这个值"remote_virtual_network"?
'remote_virtual_network':, 'remote_address_space':
我会试试这个然后回来:
此命令类似于 Azure PowerShell 上的 "get-azurermvirtualnetworkpeering -ResourceGroupName -VirtualNetworkName -Name"。
remote_virtual_network 你没有。仅当您启用了远程网关并且对等方将了解您尝试连接的远程(内部部署站点)的 IP 地址时,您才会获得此信息。
要获得此值,请在 Vnet 中部署一个网关并将其连接到 Say "Vnet-S2S-test",并在其中部署一个网关。
一次,Vnet 之间的站点到站点启动。您可以执行该命令,您应该会看到那些填充有本地网络网关详细信息的字段。
我的感觉是,您的问题实际上更像是 Python 问题,而不是 Azure 问题。假设在您的应用程序中此字段设置了值,那么 remote_virtual_network
是一个 SubResource
意味着它只有一个属性:id
for peer in list_all:
remote_virtual_network_id = peer.remote_virtual_network.id
这个家伙是一个真正的虚拟网络,所以如果你想了解它的详细信息,你需要通过 network_client.virtual_networks.get
获取它:
https://docs.microsoft.com/en-us/python/api/azure-mgmt-network/azure.mgmt.network.v2018_08_01.operations.virtualnetworksoperations?view=azure-python#get
棘手的部分是您获得了一个 ID,但 VNet 会要求提供 RG 名称和 VNet 名称,您可以为此使用 ARM ID 解析器: