首页 > 解决方案 > 运行 ADF 管道而不在订阅级别分配“贡献者”角色

问题描述

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

我想通过 RestFul API / .Net SDK 运行 ADF 管道,为此我已经按照 Microsoft 教程进行操作。

Microsoft 通过 Restful / SDK 运行 ADF 管道链接

了解必须将贡献者角色分配给应用程序(订阅级别)。但是,由于安全策略,在我的客户端环境中不允许在订阅级别分配贡献者。参与者角色权利仅允许在资源组级别。

因此,如果有任何其他方法可以在订阅级别不分配贡献者角色的情况下运行 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'.

标签: azureazure-data-factoryazure-rbac

解决方案


资源组级别的 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。这与您问题中链接中的那个相同。

在此处输入图像描述


推荐阅读