如何指定任务';“用户身份”;池默认用户(管理员)";在azure批处理帐户中?
我正在尝试从Powershell脚本创建几个批处理任务,并查看如何指定用户标识。Dotnet核心API支持这种指定,但Azure CLI不支持这种指定 当我运行下面的脚本时,我从PowerShell脚本中得到一个错误,该错误表示没有足够的权限执行此操作:如何指定任务';“用户身份”;池默认用户(管理员)";在azure批处理帐户中?,azure,azure-cli,azure-batch,Azure,Azure Cli,Azure Batch,我正在尝试从Powershell脚本创建几个批处理任务,并查看如何指定用户标识。Dotnet核心API支持这种指定,但Azure CLI不支持这种指定 当我运行下面的脚本时,我从PowerShell脚本中得到一个错误,该错误表示没有足够的权限执行此操作: az batch account login -g $resourceGroup -n $batchAccountName az batch task create --job-id $BatchJobId ` --task-id "
az batch account login -g $resourceGroup -n $batchAccountName
az batch task create --job-id $BatchJobId `
--task-id "DeployIdHere" `
--command-line $cmdCommand `
--account-name $batchAccountName `
--debug `
--verbose `
--output table
我假设找到类似于--elevation level Admin
的东西,但似乎我不知道它的共同点是什么。您可以使用--json file
标志创建一个任务,并在命令az batch task create--job id myjobtest--json file.\task.json
中指定用户标识
有关格式,请参见
您还可以使用管理员添加多个任务。任务JSON文件如下所示:
{
"id": "mytasktest123",
"commandLine": "/bin/bash -c \"sudo ls\"",
"waitForSuccess": true,
"userIdentity": {
"autoUser": {
"elevationLevel": "admin",
"scope": "pool"
},
"userName": null
}
}
结果
如果你需要进一步的帮助,请告诉我
这表示没有足够的权限执行此操作
当您使用az批量帐户登录-g$resourceGroup-n$batchAccountName
登录时,它使用Auzre AD身份验证,它使用您使用az登录的帐户的凭据
如果将命令与--shared key auth
参数一起使用,则该命令将使用共享密钥身份验证,但您的帐户还需要执行Microsoft.Batch/batchAccounts/listKeys/action
操作的权限。起初我认为Reader
角色就足够了,但根据我的测试,它没有列出批处理帐户密钥的权限
因此,要解决此问题,您可以让订阅/批处理帐户的所有者
将您的用户帐户作为所有者
或贡献者
角色以az登录
。导航到门户中的订阅/批处理帐户->访问控制(IAM)
->添加
->添加角色分配
->搜索您的用户帐户(或服务负责人),将其添加为所有者
/参与者
角色,详细信息。然后使用清除本地缓存并再次运行az批处理帐户登录-g$resourceGroup-n$batchAccountName
,az批处理任务创建
将正常工作
如何在azure批处理帐户中指定任务的用户标识“池默认用户(管理员)”
方法是使用--json file
参数,根据您的需求,在.json
文件中使用非管理员
或管理员
指定提升级别
,如下所示
batch.json
文件:
{
"id": "task1",
"commandLine": "bash -c 'echo hello'",
"userIdentity": {
"autoUser": {
"scope": "task",
"elevationLevel": "admin"
}
}
}
样本:
az batch task create --job-id myjob --json-file C:\Users\joyw\Desktop\batch.json
您的解决方案节省了我的时间。非常感谢。