首页 > 解决方案 > 在 Azure Python SDK 返回值中“取消引用”子资源

问题描述

我想检索与给定网络接口关联的公共 IP 地址。我需要做类似的事情

client = NetworkManagementClient(...)
interface = client.network_interfaces.get('rg', 'nic-name')
ip_config_id = interface[0].public_ip_address.id
ip_config = some_magic(ip_config_id)  # What goes here?
return ip_config.ip_address

这个问题表明,为了实现some_magic例程,我应该解析 ID(通过斜杠拆分)并调用client.public_ip_addresses.get(). 这个问题表明我可以调用resource_client.resources.get_by_uid,但这不会返回PublicIPAddress对象(我知道我可以调用as_dict它并以这种方式获取数据)。

有没有办法从 Azure 中的对象 ID 获取适当类型的对象(在这种情况下PublicIPAddress)(无需手动解析 ID)?

标签: azureazure-sdk-python

解决方案


更新:

由于这个问题:NetworkManagementClient 中的 public_ip_address 方法不会返回值,我们无法从中获取 ip 地址PublicIPAddress

因此,目前,您可以使用任何其他解决方法,例如:

myip = client.public_ip_addresses.get(" resource_group_name","public_ip_address_name")
print(myip.ip_address)

您可以将这行代码更改ip_config_id = interface[0].public_ip_address.id为类似my_public_ip_address = interface.ip_configurations[0].public_ip_address,则返回类型为PublicIPAddress.

例如:

在此处输入图像描述


推荐阅读