我正在尝试从Powershell脚本创建多个批处理任务,并寻找如何指定用户身份。 Dotnet核心API支持此指定,但Azure-CLI不支持。
当我在下面运行脚本时,我的PowerShell脚本出现错误,提示没有足够的权限执行此操作:
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
的东西,但似乎我不了解它的共同点。
答案 0 :(得分:0)
您可以使用--json-file
标志通过在命令az batch task create --job-id myjobtest --json-file .\task.json
中指定用户身份来创建任务。
有关格式,请参见https://github.com/Azure/azure-docs-cli-python-samples/blob/master/batch/run-job/tasks.json
您还可以通过管理员添加多个任务。任务JSON文件将如下所示:
{
"id": "mytasktest123",
"commandLine": "/bin/bash -c \"sudo ls\"",
"waitForSuccess": true,
"userIdentity": {
"autoUser": {
"elevationLevel": "admin",
"scope": "pool"
},
"userName": null
}
}
让我知道是否需要进一步的帮助。
答案 1 :(得分:0)
表示没有足够的权限执行此操作
使用az batch account login -g $resourceGroup -n $batchAccountName
登录时,它使用 Auzre AD身份验证,它使用您通过az login
登录的帐户的凭据。
如果您将命令与--shared-key-auth
参数一起使用,它将使用 Shared Key身份验证,但是您的帐户也需要具有执行Microsoft.Batch/batchAccounts/listKeys/action
操作的权限。起初我以为Reader
角色就足够了,但是根据我的测试,它没有列出批处理帐户密钥的权限。
因此,要解决此问题,您可以让Owner
中的subscription/batch account
提供以az login
或{{1} }角色。导航至门户中的订阅/批量帐户-> Owner
-> Contributor
-> Access control (IAM)
->搜索您的用户帐户(或服务主体),并将其添加为{{1 }} / Add
角色,详细信息here。然后使用az account clear
清除本地缓存并再次运行Add role assignment
,Owner
会正常工作。
如何在Azure批处理帐户中指定任务的用户身份“ Pool默认用户(Admin)”?
方法是使用Contributor
参数,根据您的要求,在az batch account login -g $resourceGroup -n $batchAccountName
文件中用az batch task create
或--json-file
指定elevationLevel
,如下所示。
nonadmin
文件:
admin
示例:
.json