从资源对象Azure SDK Python中获取资源组名称



只是想知道是否有一种简单的方法可以从Azure资源对象(即磁盘、快照对象(中获取资源组名称

目前,我使用资源URI并从中派生资源组:

# ID example: '/subscriptions/123/resourceGroups/MyRG/providers/Microsoft.Compute/disks/disk-a
resource_group = [value for value in str(disk.id).split("/") if value][3]

输出

>> MyRG

我似乎看不出有什么方法可以做这样的事情:

disk.resource_group

查看MSDN,我不认为存在resource_group属性。

我通常所做的是创建一个方法(类似于您所做的(来从资源ID中获取资源组:

def get_resource_group_from_id(resource_id):
return resource_id.lstrip("/").split("/")[3]

然后我只需要在需要的任何地方使用这种方法来获得资源组:

from azure.mgmt.compute import ComputeManagementClient
from azure.common.client_factory import get_client_from_cli_profile
compute_client = get_client_from_cli_profile(ComputeManagementClient)
for disk in compute_client.disks.list():
resource_group = get_resource_group_from_id(resource_id=disk.id)

然而,我不喜欢这个,因为我习惯于直接从资源中获取它。

您可以使用azure sdk for python引发功能请求,以将此属性包含在对象中。Azure PowerShell和Azure CLI包含此属性,所以我不明白为什么Azure Python SDK不应该包含它。

另一种选择是包含一个resource_group标记,然后可以直接从资源中获取它。

下面是用于python的Azure SDK:

https://learn.microsoft.com/en-us/python/api/overview/azure/?view=azure-python

我认为你的需求需要特定于特定的服务,通常,大范围可以特定于小范围,但每个服务的特定对象似乎并没有定义获取相应资源组的方法。我认为你的想法可能无法实现。

最新更新