如果有其他方法可以尝试,请感谢您的建议..
我想通过RestFul API / .Net SDK运行ADF管道,我已经为此完成了Microsoft教程。
Microsoft Run ADF Pipeline link via 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'.
资源组级别的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"
在屏幕截图中,您将发现如果我在另一个资源组中获取Web应用程序,它将给出错误,因此我们可以确保该角色正常工作。 Invoke-AzDataFactoryV2Pipeline
将返回RunId
,只需将它传递到Get-AzDataFactoryV2PipelineRun
,就可以获得PipelineRun的详细信息。
抓住请求,我们可以找到我上面提到的,它调用REST API。你的问题与link中的那个相同。