Получение кода ошибки: Сообщение о подписке не найдено: Подписка не найдена при попытке получить данные о виртуальной машине Azure?

#python #azure #azure-functions #azure-virtual-machine #azure-sdk-python

Вопрос:

Я работаю над сценарием, который в настоящее время получает доступ к подробной информации о виртуальной машине Azure. Это код, который у меня есть до сих пор:

 """
    Instantiate the ComputeManagementClient with the appropriate credentials.

    @return ComputeManagementClient object
"""
def get_access_to_virtual_machine():
    subscription_id = key.SUBSCRIPTION_ID
    credentials = DefaultAzureCredential(authority = AzureAuthorityHosts.AZURE_GOVERNMENT, 
                                        exclude_environment_credential = True,
                                        exclude_managed_identity_credential = True,
                                        exclude_shared_token_cache_credential = True)
    client = KeyClient(vault_url = key.VAULT_URL, credential = credentials)                     
    compute_client = ComputeManagementClient(credentials, subscription_id)
    return compute_client

"""
    Check to see if Azure Virtual Machine exists and the state of the virtual machine.
"""
def get_azure_vm(resource_group_name, virtual_machine_name):
    compute_client = get_access_to_virtual_machine()
    vm_data = compute_client.virtual_machines.get(resource_group_name, 
                                                virtual_machine_name, 
                                                expand = 'instanceView')
    return vm_data
 

При попытке запуска get_azure_vm(key.RESOURCE_GROUP, key.VIRTUAL_MACHINE_NAME) , у которого, я уверен, есть правильные учетные данные, я получаю следующий вывод об ошибке (обратите внимание, что на данный момент я заменил фактический идентификатор подписки на «xxxx»).:

 Traceback (most recent call last):
  File "/Users/shilpakancharla/Documents/function_app/WeedsMediaUploadTrigger/event_process.py", line 62, in <module>
    vm_data = get_azure_vm(key.RESOURCE_GROUP, key.VIRTUAL_MACHINE_NAME)
  File "<decorator-gen-2>", line 2, in get_azure_vm
  File "/usr/local/lib/python3.9/site-packages/retry/api.py", line 73, in retry_decorator
    return __retry_internal(partial(f, *args, **kwargs), exceptions, tries, delay, max_delay, backoff, jitter,
  File "/usr/local/lib/python3.9/site-packages/retry/api.py", line 33, in __retry_internal
    return f()
  File "/Users/shilpakancharla/Documents/function_app/WeedsMediaUploadTrigger/event_process.py", line 55, in get_azure_vm
    vm_data = compute_client.virtual_machines.get(resource_group_name, 
  File "/usr/local/lib/python3.9/site-packages/azure/mgmt/compute/v2019_12_01/operations/_virtual_machines_operations.py", line 641, in get
    map_error(status_code=response.status_code, response=response, error_map=error_map)
  File "/usr/local/lib/python3.9/site-packages/azure/core/exceptions.py", line 102, in map_error
    raise error
azure.core.exceptions.ResourceNotFoundError: (SubscriptionNotFound) The subscription 'xxxx' could not be found.
Code: SubscriptionNotFound
Message: The subscription 'xxxx' could not be found.
 

Я использую бета-версию предварительного просмотра azure.mgmt.compute , с которой была установлена pip install azure-mgmt-compute=17.0.0b1 . Обратите внимание, что я также использую учетную запись правительства Azure. Есть ли способ устранить эту ошибку? Я также пробовал использовать ServicePrincipalCredentials и get_azure_credentials() , но столкнулся с различными ошибками — мне порекомендовал использовать DefaultAzureCredentials и хранилище ключей коллега.

Комментарии:

1. Есть какие-нибудь новости по этому вопросу? Решает ли это вашу проблему? Пожалуйста, дайте мне знать, если у вас есть какие-либо ответы.

Ответ №1:

С кодом нет никаких проблем, и он отлично работает на моей стороне. И в сообщении об ошибке указана причина:

azure.core.исключения.ResourceNotFoundError: (Подписка не найдена) Не удалось найти подписку «xxxx». Код: Подписка Не найдено Сообщение: Не удалось найти подписку «xxxx».

Похоже, вы запускаете код python на своей локальной машине. Я рекомендую вам сначала войти в систему с помощью Azure CLI, а затем проверить, верен ли идентификатор подписки, который вы использовали в своем коде python.