azure-data-factory - 二头肌部署数据工厂管理的虚拟网络
问题描述
我正在尝试创建一个二头肌模块,该模块将部署数据工厂和托管 vnet。这是我所拥有的:
param dfName string
param sqlId string
resource df 'Microsoft.DataFactory/factories@2018-06-01' = {
name: dfName
location: resourceGroup().location
identity: {
type: 'SystemAssigned'
}
}
resource integrationRuntime 'Microsoft.DataFactory/factories/integrationRuntimes@2018-06-01' = {
name: '${dfName}/managedVnetIr'
properties: {
type: 'Managed'
typeProperties: {
computeProperties: {
location: 'AutoResolve'
dataFlowProperties: {
computeType: 'General'
coreCount: 8
timeToLive: 0
}
}
}
}
dependsOn: [
df
]
}
resource managedVnet 'Microsoft.DataFactory/factories/managedVirtualNetworks@2018-06-01' = {
name: '${dfName}/vnet'
properties: {
}
dependsOn: [
integrationRuntime
]
}
resource managedPrivateEndpoint 'Microsoft.DataFactory/factories/managedVirtualNetworks/managedPrivateEndpoints@2018-06-01' = {
name: '${dfName}/vnet/pe'
properties: {
privateLinkResourceId:sqlId
groupId: 'sql'
}
dependsOn: [
managedVnet
]
}
output dfId string = df.identity.principalId
运行此模块时,我收到以下错误:
“状态”:“失败”,“错误”:{“代码”:“ResourceNotFound”,“消息”:“找不到资源。ResourceId:'/subscriptions/8210b2ab-404f-40a5-baba-1cde6d89c670/resourceGroups/rg- contactcentre-dev-001/providers/Microsoft.DataFactory/factories/df-ccsurvey-dev-001/managedvirtualnetworks/vnet'。” }
我还尝试了以下方法(基于 AnsumanBal-MT 的回答)
param dfName string
param sqlId string
param vnetName string
resource df 'Microsoft.DataFactory/factories@2018-06-01' = {
name: dfName
location: resourceGroup().location
identity: {
type: 'SystemAssigned'
}
}
resource integrationRuntime 'Microsoft.DataFactory/factories/integrationRuntimes@2018-06-01' = {
parent: df
name: '${dfName}-managedVnetIr'
properties: {
type: 'Managed'
typeProperties: {
computeProperties: {
location: 'AutoResolve'
dataFlowProperties: {
computeType: 'General'
coreCount: 8
timeToLive: 0
}
}
}
}
}
resource managedVnet 'Microsoft.DataFactory/factories/managedVirtualNetworks@2018-06-01' = {
parent:df
name: vnetName
properties: {
}
dependsOn: [
integrationRuntime
]
}
resource managedPrivateEndpoint 'Microsoft.DataFactory/factories/managedVirtualNetworks/managedPrivateEndpoints@2018-06-01' = {
parent:managedVnet
name: '${vnetName}-sql-pe'
properties: {
privateLinkResourceId:sqlId
groupId: 'sql'
}
dependsOn: [
managedVnet
]
}
output dfId string = df.identity.principalId
但这会产生以下错误:
{ "status": "Failed", "error": { "code": "ResourceDeploymentFailure", "message": "资源操作完成,终端配置状态为'失败'。" } }
任何人都可以发现我做错了什么或将我引导到工作样本吗?
解决方案
要在 Data Factory 上创建托管虚拟网络,您必须引用资源组中的现有 Vnet。
更新:1
在测试为 sql 数据库创建托管私有端点时,我遇到了与您相同的错误,使用您的代码在 1 小时 18 分钟后失败,并且配置失败。
当我测试 SQL Server 时,我发现了两个问题,这两个问题groupId
应该是sqlServer
,而且 adf 的托管 vnet 将无法与 sql server 通信,因为它没有添加到firewall and virtual networks
.
要解决此问题,您需要执行以下两个步骤:
如果您正在引用
Microsoft.SQL/Servers
,请将 groupID 更改为sqlServer
,如果您正在引用“Microsoft.Synapse/Workspaces”,则可以将其保留为sql
. 您可以参考此Microsoft 文档以获取私有端点子资源名称。请添加您用于在 SQL 服务器中为 ADF 创建托管虚拟网络的现有虚拟网络。(如果您正在引用突触,请转到突触>>网络>>允许 Azure 服务和资源访问此工作区)
完成以上2个步骤后,部署就成功了。
更新:2
场景:使用 Vnet 创建 SQL Server,然后引用 vnet 和 sql 来创建 adf 托管的虚拟网络和专用终结点。
请使用我根据您的要求测试过的以下代码:
param serverName string = uniqueString('sql', resourceGroup().id)
param sqlDBName string = 'SampleDB'
param administratorLogin string
@secure()
param administratorLoginPassword string
param virtualNetworkName string = 'azure_mysql_vnet'
param subnetName string = 'azure_mysql_subnet'
param virtualNetworkRuleName string = 'AllowSubnet'
param vnetAddressPrefix string = '10.0.0.0/16'
param subnetPrefix string = '10.0.0.0/16'
param dfName string
resource virtualNetworkName_resource 'Microsoft.Network/virtualNetworks@2020-06-01' = {
name: virtualNetworkName
location: resourceGroup().location
properties: {
addressSpace: {
addressPrefixes: [
vnetAddressPrefix
]
}
}
}
resource virtualNetworkName_subnetName 'Microsoft.Network/virtualNetworks/subnets@2020-06-01' = {
parent: virtualNetworkName_resource
name: subnetName
location: resourceGroup().location
properties: {
addressPrefix: subnetPrefix
}
}
resource serverName_resource 'Microsoft.Sql/servers@2020-02-02-preview' = {
name: serverName
location: resourceGroup().location
properties: {
administratorLogin: administratorLogin
administratorLoginPassword: administratorLoginPassword
}
}
resource serverName_sqlDBName 'Microsoft.Sql/servers/databases@2020-08-01-preview' = {
parent: serverName_resource
name: sqlDBName
location: resourceGroup().location
sku: {
name: 'Standard'
tier: 'Standard'
}
}
resource serverName_virtualNetworkRuleName 'Microsoft.Sql/servers/virtualNetworkRules@2021-02-01-preview' = {
parent: serverName_resource
name: virtualNetworkRuleName
properties: {
virtualNetworkSubnetId: virtualNetworkName_subnetName.id
ignoreMissingVnetServiceEndpoint: true
}
}
resource df 'Microsoft.DataFactory/factories@2018-06-01' = {
name: dfName
location: resourceGroup().location
identity: {
type: 'SystemAssigned'
}
}
resource integrationRuntime 'Microsoft.DataFactory/factories/integrationRuntimes@2018-06-01' = {
parent: df
name: '${dfName}-managedVnetIr'
properties: {
type: 'Managed'
typeProperties: {
computeProperties: {
location: 'AutoResolve'
dataFlowProperties: {
computeType: 'General'
coreCount: 8
timeToLive: 0
}
}
}
}
}
resource managedVnet 'Microsoft.DataFactory/factories/managedVirtualNetworks@2018-06-01' = {
parent:df
name: virtualNetworkName
properties: {
}
dependsOn: [
integrationRuntime
]
}
resource managedPrivateEndpoint 'Microsoft.DataFactory/factories/managedVirtualNetworks/managedPrivateEndpoints@2018-06-01' = {
parent:managedVnet
name: '${virtualNetworkName}-${serverName}-pe'
properties: {
privateLinkResourceId: serverName_resource.id
groupId: 'sqlServer'
}
dependsOn: [
managedVnet
]
}
输出:
注意:部署成功后,您需要从 SQL Server 手动批准处于挂起状态的私有端点请求,如下所示:
推荐阅读
- ssl - 电子商务平台不为根域提供 SSL
- python - 我一直收到此代码的错误消息,有人知道为什么吗?
- c# - 如何获得垂直于 3 点的反弹角的角度或矢量?
- kubernetes - 由于 DNS,OKD 4.8 引导程序失败
- google-sheets - 创建脚本以在驱动器中将范围另存为 CSV,然后通过 emial 作为附件发送订单
- javascript - 返回“未定义”
- python - 为什么脚本在 AWS Lambda 上运行需要更长的时间?
- c# - C# 从另一个活动表单访问活动表单
- c - libaio 和同步文件输出
- angular - mattlewis92 在 Angular 日历中设置当前日期