#azure #azure-powershell
#azure #azure-powershell
Вопрос:
Я использую Azure для размещения ряда служб, и мне нужно создать несколько пользовательских ролей для RBAC. Я сталкиваюсь с ошибками при попытке запустить соответствующие команды для создания ролей.
Существует ряд хороших источников документации и пошаговых инструкций о том, как это сделать, и теоретически это кажется простым, но я продолжаю сталкиваться с проблемами при запуске командлета Powershell:
New-AzureRmRoleDefinition -InputFile [pathtojsondoc]
Входной файл — это просто json, описывающий роль
"Name": "Test Role",
"IsCustom": true,
"Description": "Role Description",
"Actions": [
"Microsoft.Resources/subscriptions/resourceGroups/read"
],
"NotActions": [ ],
"AssignableScopes": [ ]
}
При вызове New-AzureRmRoleDefinition
функции я получаю следующую ошибку:
New-AzureRmRoleDefinition: InvalidApiVersionParameter: Версия api ‘2015-07-01’ недействительна. Поддерживаемые версии ‘2016-09-01,2016-07-01,2016-06-01,2016-02-01,2015-11-01,2015-01-01,2014-04-01-preview,2014-04-01,2014-01-0
Я ищу решение либо исправить вызов как есть, чтобы он был успешным, либо обходной путь для создания пользовательских ролей.
Комментарии:
1. Ваши «Назначаемые области» не должны быть пустыми. Я протестировал команду с
"AssignableScopes": [ "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" ]
помощью . Это работает отлично. Какова версия вашего Azure PowerShell? И используете ли вы глобальную среду Azure?2. Извините, образец был пуст, но фактический запуск имеет значение. Я удалил его, чтобы сохранить GUID моей подписки вне кода. Я работаю над глобальной инфраструктурой, если быть точным, на западе США, и я использую выпуск инструментов от 28 сентября.
3. Вам не нужно указывать apiVersion для командлетов — что-то кажется неправильным… Попробуйте выполнить Get-Module -Name AzureRM.Resources и посмотреть, какая у вас версия (я думаю, должна быть 3.2)
4. @bmoore-msft. Я согласен, что это кажется неправильным. Манифест 3.2.0 в соответствии с командой Get-Module.
5. Хорошо, зарегистрируйте проблему здесь: github.com/Azure/azure-powershell/issues и я поспрашиваю вокруг, чтобы узнать, кто может помочь разобраться в том, что происходит…
Ответ №1:
Оказывается, ошибка, которую я получал, была неправильным сообщением об ошибке, вызывающим неправильную диагностику.
После обновления до последней версии Azure PowerShell я получил ту же ошибку, поэтому я немного покопался и нашел обновленный пример кода.
Я устанавливал назначаемые области в файле для определенных групп ресурсов, используя формат /subscriptions/*******/myresourcegroupname
, но правильный формат — /subscriptions/*******/resourceGroups/myresourcegroupname
обратите внимание на дополнительный /resourceGroups/
путь.