共用方式為

Bicep 诊断代码 - BCP139

当使用 resource 将资源部署到与目标范围不同的范围时,会发生此诊断。 应改用 module。 有关详细信息,请参阅根据该范围的以下文章:

说明

资源的范围必须与 Bicep 文件的范围匹配,才可用于部署。 必须使用模块将资源部署到其他范围。

Level

错误

解决方案

若要将资源部署到并非目标范围的范围,请添加一个 module

示例

以下示例会将存储帐户资源部署到同一订阅中的不同资源组。 该示例引发诊断,因为未使用 module 声明类型:

param targetResourceGroup string
param storageAccountName string 
param location string 

// resource deployed to a different resource group in the same subscription
resource storage 'Microsoft.Storage/storageAccounts@2023-05-01' = {
  name: storageAccountName
  scope: resourceGroup(targetResourceGroup)
  location: location
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
}

可使用 module 声明类型修复诊断:

param targetResourceGroup string 
param storageAccountName string = uniqueString(resourceGroup().id)
param location string = 'eastus'

module storageModule './module.bicep' = {
  name: 'deployStorage'
  scope: resourceGroup(targetResourceGroup)
  params: {
    storageAccountName: storageAccountName
    location: location
  }
}

以下示例会将资源组部署到其他订阅。 该示例引发诊断,因为未使用 module

targetScope = 'subscription'

param targetSubscriptionID string
param resourceGroupName string
param location string 

// resource deployed to a different subscription
resource exampleResource 'Microsoft.Resources/resourceGroups@2024-03-01' =  {
  name: resourceGroupName
  scope: subscription(targetSubscriptionID)
  location: location
}

可使用 module 声明类型修复诊断:

targetScope = 'subscription'

param otherSubscriptionID string
param resourceGroupName string
param location string

// module deployed to a different subscription
module exampleModule 'module.bicep' = {
  name: 'deployToDifferentSub'
  scope: subscription(otherSubscriptionID)
  params: {
    resourceGroupName: resourceGroupName
    location: location
  }
}

后续步骤

有关 Bicep 诊断的详细信息,请参阅 Bicep 核心诊断