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

2024-09-22 10:33:33 发布

您现在位置: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

Tags: 对象方法名称idvalueexamplegroupuri
2条回答

看看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://docs.microsoft.com/en-us/python/api/overview/azure/?view=azure-python

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

相关问题 更多 >