azure - 运行 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'.
解决方案
资源组级别的 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。这与您问题中链接中的那个相同。
推荐阅读
- php - 覆盖 DBAL 类型
- rust - 在 and_then 中获取 rust 未来的闭包参数的所有权
- bash - Bash 脚本 | 从可用磁盘空间中减去百分比
- java - Firebase Firestore:文档未映射到模型类
- matlab - Matlab:如何在没有循环或内置函数的情况下递归地获取斐波那契序列中的第 N 个元素
- mysql - Springboot + JSP + Spring Security:配置数据源失败
- java - 当用户创建帐户时,它会进入家庭活动而不是登录活动,如何避免这种情况?
- unity3d - 爆炸粒子未扩散到全屏
- typescript - Vue中使用的接口的Eslint no-unused-vars错误显示
- spreadsheet - 请用 importXML 看看我的代码