运行 ADF 管道未在订阅级别分配 'Contributor' 角色

Run ADF pipeline without assigning 'Contributor' role at subscription level

感谢您的建议,如果有其他我可以尝试的方法..

我想通过 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'.

资源组级别的贡献者角色就足够了,我通过 powershell 启动了一个 运行 管道,它工作正常。该命令本质上是调用 REST API:Pipelines - Create Run,因此您也可以直接调用 REST API。

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

在屏幕截图中,您会发现如果我在另一个资源组中获取网络应用程序,则会出现错误,因此我们可以确保该角色正在运行。 Invoke-AzDataFactoryV2Pipeline 将 return RunId 传递给 Get-AzDataFactoryV2PipelineRun 即可获取 PipelineRun 的详细信息。

捕获请求,我们可以找到我上面提到的,它调用了REST API。与你问题中link中的相同。