如何通过IaC自动获取Front Door创建的专用终结点名称以完成自动审批?
自动审批Front Door共享专用链接的应用服务端请求
当你在Bicep中为Front Door源配置sharedPrivateLinkResource并将status设为Approved时,这仅完成了Front Door侧的同意操作——应用服务(如App Service)端的专用链接请求仍会处于待审批状态。要实现自动化审批,无需手动提取专用终结点名称,可通过Bicep的资源引用能力自动获取该名称并完成审批。
实现步骤
1. 定义Front Door及共享专用链接资源
先部署Front Door及其关联的共享专用链接资源,触发应用服务的专用链接请求:
param frontDoorName string param appServiceName string param appServiceResourceGroup string resource frontDoor 'Microsoft.Network/frontDoors@2021-06-01' = { name: frontDoorName location: 'global' properties: { // 其他Front Door基础配置 backendPools: [ { name: 'myBackendPool' backends: [ { address: '${appServiceName}.azurewebsites.net' // 后端其他配置(优先级、权重等) } ] sharedPrivateLinkResources: [ { name: 'appServiceSharedLink' properties: { privateLinkResourceId: resourceId(appServiceResourceGroup, 'Microsoft.Web/sites', appServiceName) groupIds: ['sites'] status: 'Approved' // Front Door侧标记同意 } } ] } ] } }
2. 自动获取专用终结点名称并完成审批
通过引用已创建的Front Door共享专用链接资源,提取专用终结点名称,再在应用服务的专用链接连接资源中完成审批:
// 引用已创建的Front Door共享专用链接资源 resource frontDoorSharedLink 'Microsoft.Network/frontDoors/sharedPrivateLinkResources@2021-06-01' existing = { parent: frontDoor name: 'appServiceSharedLink' } // 从专用终结点ID中提取名称(ID格式为/subscriptions/.../privateEndpoints/{peName},索引8对应名称) var privateEndpointName = frontDoorSharedLink.properties.privateEndpoint.id.split('/')[8] // 审批应用服务侧的专用链接请求 resource appServicePrivateEndpointConnection 'Microsoft.Web/sites/privateEndpointConnections@2022-03-01' = { name: '${appServiceName}/${privateEndpointName}' parent: resourceId(appServiceResourceGroup, 'Microsoft.Web/sites', appServiceName) properties: { privateLinkServiceConnectionState: { status: 'Approved' description: 'Auto-approved by Bicep deployment' } } dependsOn: [frontDoor] // 确保先完成Front Door侧资源部署,生成待审批请求 }
关键细节
existing关键字用于引用已部署的共享专用链接资源,避免重复创建。- 专用终结点ID的结构固定,通过
split('/')[8]可精准提取名称,无需手动干预。 dependsOn强制部署顺序,确保Front Door先触发专用链接请求,再执行应用服务侧的审批操作。
内容的提问来源于stack exchange,提问作者Don Chambers
相关产品推荐
相关产品推荐

