使用Bicep部署Data Factory托管虚拟网络的部署报错排查求助
ADF托管VNet部署Bicep代码问题修复说明
原有代码的核心问题
- 依赖顺序错误:托管集成运行时(IR)需要绑定已存在的托管VNet,两个版本的代码均为先创建IR再创建托管VNet,逻辑完全倒置
- 托管IR缺少VNet绑定配置:Managed类型的IR如果要使用ADF托管VNet,必须在
typeProperties下显式指定virtualNetwork参数关联目标VNet - 子资源命名不规范:使用
parent字段声明父子资源关系后,子资源名称只需填写自身资源段,不需要重复拼接父资源名称,否则会导致资源名重复、路径错误 - 第一个版本未使用
parent字段,直接用/拼接名称的方式虽然可行,但依赖顺序和IR配置的问题依然存在,所以会报VNet找不到的错误 - 第二个版本虽然用了
parent字段,但没有修复依赖顺序和IR配置的问题,所以触发通用部署失败报错
可正常运行的代码示例
param dfName string param sqlId string param managedVnetName string = 'default' // ADF托管VNet默认名通常用default即可 resource df 'Microsoft.DataFactory/factories@2018-06-01' = { name: dfName location: resourceGroup().location identity: { type: 'SystemAssigned' } } // 第一步先创建托管VNet resource managedVnet 'Microsoft.DataFactory/factories/managedVirtualNetworks@2018-06-01' = { parent: df name: managedVnetName properties: {} } // 第二步创建绑定了托管VNet的集成运行时 resource integrationRuntime 'Microsoft.DataFactory/factories/integrationRuntimes@2018-06-01' = { parent: df name: 'managedVnetIr' // 已指定parent为df,无需再加dfName前缀 properties: { type: 'Managed' typeProperties: { computeProperties: { location: 'AutoResolve' dataFlowProperties: { computeType: 'General' coreCount: 8 timeToLive: 0 } } // 新增托管VNet绑定配置 virtualNetwork: { referenceName: managedVnet.name type: 'ManagedVirtualNetworkReference' } } } dependsOn: [ managedVnet // 依赖先建好的VNet ] } // 最后创建托管私有端点 resource managedPrivateEndpoint 'Microsoft.DataFactory/factories/managedVirtualNetworks/managedPrivateEndpoints@2018-06-01' = { parent: managedVnet name: 'sql-pe' properties: { privateLinkResourceId: sqlId groupId: 'sql' } dependsOn: [ integrationRuntime ] } output dfId string = df.identity.principalId
额外注意事项
- 部署前请确认传入的
sqlId是正确的Azure SQL资源ID,且目标SQL资源已开启私有端点接入权限 - 如果使用自定义的托管VNet名称,保持各配置段的名称引用一致即可
内容的提问来源于stack exchange,提问作者Rob Bowman
相关产品推荐
相关产品推荐

