如何从Data Factory链接服务获取ADLS存储账户名称
提取ADLS链接服务中存储账户名的实现方法
事件触发器默认返回的payload确实不会携带存储账户字段,你可以根据自己的场景选下面三种方案实现:
- 方案1:管道参数硬编码默认值(最简单,单存储账户场景推荐)
如果你的事件触发器只绑定了1个ADLS存储账户,直接给管道新增一个字符串类型参数,把存储账户名填为参数默认值即可。触发器运行时只会覆盖和事件payload字段匹配的参数,你自定义的这个存储账户参数会一直保留默认值,管道里所有活动直接引用这个参数就行。 - 方案2:调用ADF管理API动态拉取链接服务配置(多环境/多链接服务场景推荐)
不需要手动维护参数值,直接实时拉取链接服务的配置解析就行:- 先给ADF实例的托管标识授予对应资源组/ADF实例的
Microsoft.DataFactory/factories/linkedservices/read权限,直接分配Data Factory内置参与者角色也可以 - 管道里新增Web活动,配置项如下:
- 请求方法:
GET - 请求地址:
https://management.azure.com/subscriptions/<替换为你的订阅ID>/resourceGroups/<替换为你的资源组名称>/providers/Microsoft.DataFactory/factories/<替换为你的ADF实例名称>/linkedservices/<替换为你的ADLS链接服务名称>?api-version=2018-06-01 - 认证类型:系统分配托管标识,受众资源填
https://management.azure.com
- 请求方法:
- 拿到Web活动返回结果后,用表达式从URL字段里拆分出存储账户名即可,示例表达式:
这个表达式会自动把@split(split(activity('拉取链接服务配置').output.properties.typeProperties.url, '//')[1], '.')[0]https://<你的存储账户名>.dfs.core.windows.net格式的URL里的账户名拆分出来。
- 先给ADF实例的托管标识授予对应资源组/ADF实例的
- 方案3:触发器自定义传参(单触发器绑定多存储账户场景推荐)
如果你用一个事件触发器监听多个存储账户的事件,可以直接在触发器配置里给每个存储账户的事件绑定规则配置自定义参数,把对应存储账户名作为参数值,触发时直接传到管道里,不需要额外解析配置。
踩坑提示:不要浪费时间解析触发器默认输出,事件网格触发ADF时的默认payload结构里确实没有存储账户字段,没法直接从触发上下文里拿到这个值。
内容的提问来源于stack exchange,提问作者Hillol Saha
相关产品推荐
相关产品推荐

