Создание собственного изображения с помощью Python Azure SDK в DevTestLabs
Я пытаюсь создать собственный образ из виртуального жесткого диска, который я загрузил в лабораторию разработчиков.
Я использую следующий код для этого:
from azure.mgmt.storage import StorageManagementClient
....
credentials = ServicePrincipalCredentials( client_id = '##', tenant = '##', secret = "##")
resource_client = DevTestLabsClient(credentials, subscriptID)
....
custom_image_properties = CustomImagePropertiesCustom(CustomImageOsType.windows, config.CustomImage.Name, True)
custom_image = CustomImage(vhd = custom_image_properties)
resource_client.custom_images.create_or_update(rgName,labName, imageName, custom_image)
Это выдает мне следующую ошибку: Не удалось проанализировать URI с именем ImageName со значением '##customImageName##'.
Дайте мне знать, что я делаю не так? А где мне положено вводить путь к VHD в API. Я не могу найти аргумент, который идет по пути!
2 ответа
Это выдает мне следующую ошибку: Не удалось проанализировать URI с именем ImageName со значением '##customImageName##'.
Согласно сообщению об ошибке, кажется, imagename
значение является URI.
Имя изображения должно быть строкой.
create_or_update(resource_group_name, lab_name, name, custom_image, custom_headers=None, raw=False, **operation_config)
Parameters:
resource_group_name (str) – The name of the resource group.
lab_name (str) – The name of the lab.
name (str) – The name of the custom image.
Более подробную информацию можно найти по этой ссылке.
Кстати, чтобы решить эту проблему более эффективно, не могли бы вы опубликовать весь ваш сценарий:)
Я пытался создать custom image
с кодом, который вы предложили.
from azure.common.credentials import ServicePrincipalCredentials
from azure.mgmt.devtestlabs import DevTestLabsClient
from azure.mgmt.devtestlabs.models.custom_image_properties_custom import CustomImagePropertiesCustom
from azure.mgmt.devtestlabs.models.custom_image import CustomImage
from azure.mgmt.devtestlabs.models.dev_test_labs_client_enums import CustomImageOsType
client_id = <your client id>
tenant = <your tenant id>
secret = <your secret id>
subscriptID = <your subcript id>
imageName='jaygong.vhd'
name=<your custom image name as you want>
rgName = <your resource name>
labName = <your lab name>
credentials = ServicePrincipalCredentials(client_id=client_id, tenant=tenant , secret=secret)
resource_client = DevTestLabsClient(credentials, subscriptID)
custom_image_properties = CustomImagePropertiesCustom(CustomImageOsType.windows, imageName, True)
custom_image = CustomImage(vhd = custom_image_properties)
resource_client.custom_images.create_or_update(rgName,labName, name, custom_image)
тогда я воспроизвожу твой вопрос.
E:\Python27\python.exe E:/PythonWorkSpace/CreateVM/Create.py
Traceback (most recent call last):
File "E:/PythonWorkSpace/CreateVM/Create.py", line 19, in <module>
resource_client.custom_images.create_or_update(rgName,labName, imageName, custom_image)
File "E:\Python27\lib\site-packages\azure\mgmt\devtestlabs\operations\custom_images_operations.py", line 293, in create_or_update
get_long_running_status, long_running_operation_timeout)
File "E:\Python27\lib\site-packages\msrestazure\azure_operation.py", line 350, in __init__
raise CloudError(self._response)
msrestazure.azure_exceptions.CloudError: Azure Error: InvalidUrlProvided
Message: Failed to parse URI named ImageName with value of 'aaa'.
Process finished with exit code 1
После исследования я обнаружил, что imageName
параметр выше не только ваш VHD
имя, это должно быть complete url
вашей VHD
файл в вашем хранилище имя. Это выглядит как:
https://<your storage account>.blob.core.windows.net/<your container name>/<your vhd file name>
Я изменил значение imageName
затем успешно создал пользовательское изображение.
Надеюсь, это поможет вам. Любое беспокойство, пожалуйста, не стесняйтесь, позвольте мне знать.