列出给定Azure帐户的订阅

时间:2019-05-28 03:54:11

标签: python azure azure-sdk-python

我正在尝试使用 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----operation-config-


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 个答案:

答案 0 :(得分:0)

尝试此代码,

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

找到方便的工具

答案 1 :(得分: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部门工作)

答案 2 :(得分:0)

我认为我已使用 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)

感谢您的回复。

答案 3 :(得分:0)

前几天,我遇到了这个问题,发现我创建的凭据具有错误的权限,即“ https://login.microsoftonline.com/common”,如果我的azure帐户可以是组织或学校帐户,但是对于个人帐户,我必须指定授权网址的承租人,否则默认承租人common无权访问我的个人帐户的订阅。