运行 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中的相同。
感谢您的建议,如果有其他我可以尝试的方法..
我想通过 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中的相同。