Список подписок для данной учетной записи Azure - PullRequest
0 голосов
/ 28 мая 2019

Я пытаюсь составить список подписок в учетной записи Azure, используя azure-python-sdk .

Я перешел по этой ссылке в документации.

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)

Предполагается вернуть список подписок. Тем не менее, я вижу только пустой список, возвращаемый каждый раз, когда я пробую приведенный выше код. Кто-нибудь может помочь?

Ответы [ 3 ]

0 голосов
/ 28 мая 2019

Если список пуст и вы получаете не исключение, скорее всего, ваши учетные данные верны (без исключения), но у вашего пользователя нет доступа к подпискам (нет разрешений)

На портале 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

(я работаю на MS в команде SDK)

0 голосов
/ 29 мая 2019

Кажется, я решил проблему с помощью 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)

Спасибо за ваши ответы.

0 голосов
/ 28 мая 2019

Попробуйте этот код,

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

...