5

我正在尝试使用azure-python-sdk列出 Azure 帐户中的订阅。

我在文档中关注了这个链接。

https://docs.microsoft.com/en-us/python/api/azure-mgmt-subscription/azure.mgmt.subscription.operations.subscriptionsoperations?view=azure-python#list-custom-headers-none--raw -false----操作配置-


from azure.mgmt.subscription import SubscriptionClient
from msrestazure.azure_active_directory import UserPassCredentials

credentials = UserPassCredentials(username='xxxx', password='xxxx')
sub_client = SubscriptionClient(credentials)
subs = [sub.as_dict() for sub in sub_client.subscriptions.list()]
print(subs)

它应该返回订阅列表。但是,每次尝试上述代码时,我都会看到只返回空列表。有人可以帮忙吗?

4

4 回答 4

3

试试这个代码,

def list_subscriptions():
    try:
        sub_client = get_client_from_cli_profile(SubscriptionClient)
    except CLIError:
        logger.info("Not logged in, running az login")
        _run_az_cli_login()
        sub_client = get_client_from_cli_profile(SubscriptionClient)

    return [["Subscription_name", "Subscription ID"]] + [
        [sub.display_name, sub.subscription_id]
        for sub in sub_client.subscriptions.list()
    ]

您可以从here

于 2019-05-28T04:05:50.840 回答
2

我想我使用Azure CLI解决了这个问题。但是,我仍然想知道为什么使用azure-python-sdk不能正常工作。

这是代码:

import subprocess
import json
subscriptions = json.loads(subprocess.check_output('az account list', shell=True).decode('utf-8'))
print(subscriptions)

谢谢你的回复。

于 2019-05-29T16:44:31.503 回答
0

我有一个类似的问题,所以我用过AzureCliCredential,它很简单。

代码是这样的:

def subscription_list():
    credential = AzureCliCredential()
    subscription_client = SubscriptionClient(credential)
    sub_list = subscription_client.subscriptions.list()
    column_width = 40

    print("Subscription ID".ljust(column_width) + "Display name")
    print("-" * (column_width * 2))
    for group in list(sub_list):
        print(f'{group.subscription_id:<{column_width}}{group.display_name}')

在尝试此代码之前,您必须在您的开发环境中Azure登录command line

于 2021-11-26T00:11:53.000 回答
0

如果列表为空并且您没有异常,则可能您的凭据正确(无异常),但您的用户无权访问订阅(无权限)

在 Azure 门户的订阅面板中,您有一个“访问控制 (IAM)”按钮,用于定义允许哪些用户访问给定订阅。 https://docs.microsoft.com/azure/role-based-access-control/role-assignments-portal

https://docs.microsoft.com/azure/role-based-access-control/rbac-and-directory-admin-roles

(我在 SDK 团队的 MS 工作)

于 2019-05-28T16:30:00.710 回答