Попытка проверить любой шаблон ARM, но получаю: 'Ошибка преобразования значения <... MyTemplate ...> в тип' .... Templates.Schema.Template ' - PullRequest
0 голосов
/ 20 сентября 2019

Я пытаюсь проверить шаблон руки - ЛЮБОЙ шаблон руки - но всегда получаю одну и ту же ошибку:

The request content was invalid and could not be deserialized: 'Error converting value "
{
...
}" to type 'Microsoft.WindowsAzure.ResourceStack.Frontdoor.Templates.Schema.Template'. Path 'properties.template', line 1, position 1202.'.

Я создал шаблон ARM на портале Azure и подключил его:

#!/usr/bin/env python3                                                                                                                                                                   

# https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-authoring-templates                                                                                       
t='''                                                                                                                                                                                    
{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1",
    "apiProfile": "",
    "parameters": {
        "testType": {
            "type": "string",
            "defaultValue": "Standard_LRS",
            "allowedValues": [
                "Standard_LRS",
                "Standard_ZRS",
                "Standard_GRS",
                "Standard_RAGRS",
                "Premium_LRS"
            ]
        }
    },
    "variables": {
        "testName": "[concat('test', uniqueString(resourceGroup().id))]"
    },
    "functions": [],
    "resources": [
        {
            "name": "[variables('testName')]",
            "type": "Microsoft.Storage/storageAccounts",
            "location": "[resourceGroup().location]",
            "apiVersion": "2015-06-15",
            "dependsOn": [],
            "tags": {
                "displayName": "test"
            },
            "properties": {
                "accountType": "[parameters('testType')]"
            }
        }
    ],
    "outputs": {}
}    

'''
from azure.common.client_factory import get_client_from_cli_profile
from azure.mgmt.resource import ResourceManagementClient
c = get_client_from_cli_profile(ResourceManagementClient)

print(c.deployments.validate('PAWS_Resources', 'food', c.models().DeploymentProperties(mode='incremental', template=t)).error.message)

1 Ответ

0 голосов
/ 21 сентября 2019

Согласно документам:

шаблон объекта Содержание шаблона.Этот элемент используется, когда вы хотите передать синтаксис шаблона непосредственно в запросе, а не ссылаться на существующий шаблон.Это может быть JObject или правильно сформированная строка JSON .Используйте либо свойство templateLink, либо свойство template, но не оба.

Однако ему нужен объект python, а не "правильно сформированная строка JSON".

Удаление кавычек из данных шаблона заставляет его работать.

...