Шаблон Arm — неверное содержимое JSON, найденное в запросе

#azure #deployment #arm-template

#azure #развертывание #arm-шаблон

Вопрос:

Я пытаюсь добавить политику доступа к KeyVault с помощью шаблона Arm, но я получаю сообщение об ошибке «В запросе найдено неверное содержимое JSON» Подробности: InnerError: Code: сообщение о плохом запросе: Ошибка: Сообщение о плохом запросе: неверное содержимое JSON, найденное в запросе..

Я не понимаю, что не так с шаблоном, который я использую.

Это шаблон, который я использую:

 {  
        "contentVersion": "1.0.0.0",
        "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json",
        "parameters": {
            "keyVault": {
                "type": "string"
            },
            "resourceGroup": {
                "type": "string"
            },
            "subscriptionId": {
                "type": "string"
            },
            "tenantId": {
                "type": "string"
            },
            "objectId": {
                "type": "string"
            }
        },
        "resources": [
            {
                "name": "[concat(take(deployment().name, 50))]",
                "apiVersion": "2017-05-10",
                "resourceGroup": "[parameters('resourceGroup')]",
                "subscriptionId": "[parameters('subscriptionId')]",
                "type": "Microsoft.Resources/deployments",
                "properties": {
                    "mode": "Incremental",
                    "template": {
                        "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
                        "contentVersion": "1.0.0.0",
                        "resources": [
                            {
                                "type": "Microsoft.KeyVault/vaults/accessPolicies",
                                "name": "[concat(parameters('keyVault'), '/add')]",
                                "apiVersion": "2018-02-14",
                                "properties": {
                                    "accessPolicies": [
                                        {
                                            "tenantId": "[parameters('tenantId')]",
                                            "objectId": "[parameters('objectId')]",
                                            "permissions": {
                                                "keys": [
                                                    "get",
                                                    "list"
                                                ],
                                                "secrets": [
                                                    "get",
                                                    "list"
                                                ],
                                                "certificates": [
                                                    "get",
                                                    "list"
                                                ]
                                            }
                                        }
                                    ]
                                }
                            }
                        ]
                    }
                }
            }
        ]
    }
 

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

1. В вашем коде в вопросе отсутствует a { в качестве самого первого символа. Остальное выглядит нормально.

2. У меня есть { в качестве символа fisrt , но я получаю эту ошибку

3. да, это выглядит нормально, если только вы не передаете какой-то мусор в параметры

4. Как дела? Ваша проблема решена?

5. Привет @AdyM, очень рад, что ваша проблема решена. Пожалуйста, нажмите на галочку рядом с ответом, чтобы переключить его с серого на заполненный, чтобы принять его в качестве ответа, чтобы он помог другим и закрыл этот запрос 🙂

Ответ №1:

Если вы просто хотите добавить некоторую политику доступа к существующему хранилищу ключей Azure, я изменил ваш шаблон, как показано ниже:

 {
    "contentVersion": "1.0.0.0",
    "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json",
    "parameters": {
        "keyVault": {
            "type": "string"
        },
        "tenantId": {
            "type": "string"
        },
        "objectId": {
            "type": "string"
        }
    },
    "resources": [{

            "type": "Microsoft.KeyVault/vaults/accessPolicies",
            "name": "[concat(parameters('keyVault'), '/add')]",
            "apiVersion": "2018-02-14",
            "properties": {
                "accessPolicies": [{
                        "tenantId": "[parameters('tenantId')]",
                        "objectId": "[parameters('objectId')]",
                        "permissions": {
                            "keys": [
                                "get",
                                "list"
                            ],
                            "secrets": [
                                "get",
                                "list"
                            ],
                            "certificates": [
                                "get",
                                "list"
                            ]
                        }
                    }
                ]
            }
        }

    ]
}
 

Я протестировал на своей стороне PowerShell, он работает как исключенный.
Результат:

введите описание изображения здесь
введите описание изображения здесь