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

Get resource group name from resource object 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

下面是 python 的 Azure SDK:

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

我觉得你的需求需要具体到一个具体的服务,而且一般大范围可以具体到一个小范围,但是每个服务的具体对象好像都没有定义获取方法对应的资源组。我觉得你的想法可能实现不了。

看着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 标签,然后您可以直接从资源中获取它。