Запуск конвейера ADF без назначения роли «Участник» на уровне подписки - PullRequest
1 голос
/ 06 марта 2019

Спасибо за ваш совет, если есть другой подход, который я мог бы попробовать ..

Я хотел бы запустить конвейер ADF через RestFul API / .Net SDK, и для этого я прошел учебное руководство Microsoft.

Соединение Microsoft Run ADF Pipeline через Restful / SDK

Понимать, что роль Участник должна быть назначена приложению (уровень подписки). Однако из-за политики безопасности назначение участника на уровне подписки недопустимо. Разрешение роли участника разрешено только на уровне группы ресурсов.

Следовательно, могу ли я получить ваш совет, если есть какой-то другой способ, которым я мог бы запустить конвейер ADF без назначения роли участника на уровне подписки?

Ниже приведено сообщение об ошибке, которое я получил от моей программы на c #:

System.AggregateException
HResult=0x80131500
Message=One or more errors occurred.
Source=mscorlib
StackTrace:
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean 
includeTaskCanceledExceptions)
at System.Threading.Tasks.Task`1.GetResultCore(Boolean 
waitCompletionNotification)
at System.Threading.Tasks.Task`1.get_Result()
at ADFv2QuickStart.Program.Main(String[] args) in 
C:\Users\ADFv2QuickStart\Program.cs:line 59
Inner Exception 1:
CloudException: The client 'xxxxxx' with 
object id 'xxxxxx' does not have authorization 
to perform action 
'Microsoft.DataFactory/factories/pipelines/createRun/action' over scope 
'/subscriptions/xxxxxxxx/resourceGroups/rg-xxx/providers/Microsoft.DataFactory/factories/adf-xxxx/pipelines/pipeline12'.

1 Ответ

0 голосов
/ 06 марта 2019

Достаточно роли Contributor на уровне группы ресурсов, я запускаю конвейер через powershell, он отлично работает.По сути, команда вызывает REST API: Pipelines - Create Run , поэтому вы также сможете напрямую вызывать REST API.

Invoke-AzDataFactoryV2Pipeline -ResourceGroupName joywebapp -DataFactoryName joyfactoryv2 -PipelineName pipeline1
Get-AzDataFactoryV2PipelineRun -ResourceGroupName joywebapp -DataFactoryName joyfactoryv2 -PipelineRunId "xxxxxxx"

enter image description here

На снимке экрана вы найдете, если я получу веб-приложение в другой группе ресурсов, оно выдаст ошибку, поэтому мы можем убедиться, что роль работает.Invoke-AzDataFactoryV2Pipeline вернет RunId, просто передайте его в Get-AzDataFactoryV2PipelineRun, вы можете получить подробную информацию о PipelineRun.

Перехватить запрос, мы могли бы найти то, что я упомянул выше, он вызывает RESTAPI.То же самое относится и к ссылке в вашем вопросе.

enter image description here

...