CD流水线创建ADF链接集成运行时测试环境不可见问题排查
问题根因
你执行的CLI命令参数逻辑完全写反,还存在语法错误:
- 核心逻辑错误:
az datafactory integration-runtime linked-integration-runtime create指令的执行作用域是承载原生自托管IR的源ADF(即你的Dev环境ADF),执行后只会在源ADF的共享IR列表里生成一条授权标记,根本不会在目标ADF侧生成可被链接服务引用的实体IR资源,这就是你仅在Dev环境看到新增条目、Test环境找不到对应资源的直接原因。 - 语法错误:原命令中
'--integration-runtime-name参数前多打了一个单引号,即便参数逻辑正确也会触发执行异常。
可直接落地的实现方案
1. 修正流水线中创建链接IR的CLI逻辑
跨环境复用SHIR的正确CLI流程是:先从Dev环境的原生SHIR拉取共享授权密钥,再在目标环境(Test/Prod)的ADF资源上下文下创建链接类型的自托管IR,直接把以下命令替换到流水线对应步骤即可,Prod环境部署时替换对应的资源组、ADF名称、订阅ID参数:
# 配置CLI扩展自动安装无提示 az config set extension.use_dynamic_install=yes_without_prompt # 步骤1:从Dev环境源SHIR拉取跨环境共享授权密钥 SHIR_AUTH_TOKEN=$(az datafactory integration-runtime get-connection-info \ --factory-name "proj-dev-adf" \ --integration-runtime-name "OnPrem-SHIR" \ --resource-group "proj-datalake-dev-rg" \ --subscription-id $(DEV_SUBSCRIPTION_ID) \ --query "serviceToken" -o tsv) # 步骤2:在目标环境ADF中创建指向Dev SHIR的链接IR(以Test环境为例) az datafactory integration-runtime create \ --factory-name "proj-test-adf" \ --integration-runtime-name "OnPrem-SHIR-Shared" \ --resource-group "proj-datalake-test-rg" \ --subscription-id $(TARGET_SUBSCRIPTION_ID) \ --location "West Europe" \ --properties "{\"type\":\"LinkedSelfHosted\",\"typeProperties\":{\"key\":{\"type\":\"SecureString\",\"value\":\"$SHIR_AUTH_TOKEN\"}}}"
跨订阅/跨租户部署时,提前给流水线使用的服务主体配置双份权限:对Dev环境SHIR的连接信息读取权限、对目标环境ADF的IR写入权限,避免出现403报错。
2. 调整ADF ARM模板配置
- 登录Dev环境ADF,在管理中心的ARM模板导出配置页,把Dev环境原生的
OnPrem-SHIR加入排除资源列表,避免后续部署时ARM模板尝试在目标环境创建同名原生SHIR,和提前创建的链接IR冲突。 - 给每个环境(Test/Prod)单独配置ARM模板参数文件,将SQL类型链接服务的
connectVia.referenceName参数值,设置为对应环境中创建的共享链接IR名称(即上述命令里的OnPrem-SHIR-Shared),不要硬编码Dev环境的原生IR名称。
3. 调整流水线执行顺序
把CD流水线的步骤按以下顺序排布,避免资源依赖报错:
- 第一步:执行上述CLI命令,在当前部署的目标环境中创建共享链接IR
- 第二步:增加CLI校验步骤,查询目标环境链接IR是否存在,配置1-2次失败重试,应对Azure资源创建的最终一致性延迟
- 第三步:执行ARM模板部署,将ADF的数据集、管道、链接服务等业务资源发布到目标环境,自动绑定已创建好的共享链接IR
- 第四步:可选增加连通性校验步骤,调用ADF接口测试SQL链接服务的连通性,确认SHIR可正常访问本地数据源
注意事项
- 只要Dev环境的原生SHIR没有删除重建,拉取到的
SHIR_AUTH_TOKEN可以重复给Test、Prod等多个环境使用,不需要每次部署重新生成。 - 链接IR是纯逻辑映射资源,不需要在Test/Prod环境单独部署SHIR节点或虚拟机,所有运行能力、网络配置完全复用Dev环境的原生SHIR节点,提前确认Dev侧SHIR节点的网络安全组、防火墙规则放通了所有环境需要访问的本地数据源地址即可。
- 不要给链接IR配置自定义节点、并发限制等参数,所有运行时配置统一在Dev环境的原生SHIR上调整,会自动同步到所有关联的链接IR。
内容的提问来源于stack exchange,提问作者Obiii
相关产品推荐
相关产品推荐

