Compartir vía


Código de error de Bicep: BCP139

Este error se produce cuando se usa resource para implementar recursos en un ámbito diferente al de destino. Debe usar module en su lugar. Para obtener más información, consulte los siguientes artículos en función del ámbito:

Descripción del error

A resource's scope must match the scope of the Bicep file for it to be deployable. You must use modules to deploy resources to a different scope.

Solución

Para implementar recursos en un ámbito que no sea el ámbito de destino, agregue un module.

Ejemplos

En el ejemplo siguiente se implementa un recurso de cuenta de almacenamiento en otro grupo de recursos de la misma suscripción. En el ejemplo se produce el error porque no se usa el module tipo de declaración:

param otherResourceGroup string
param location string 

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

Puede corregir el error mediante el tipo de module declaración:

param otherResourceGroup string

// module deployed to a different resource group in the same subscription
module exampleModule 'module.bicep' = {
  name: 'deployStorageToAnotherRG'
  scope: resourceGroup(otherResourceGroup)
}

En el ejemplo siguiente se implementa un grupo de recursos en una suscripción diferente. En el ejemplo se genera el error porque module no se usa

targetScope = 'subscription'

param otherSubscriptionID string

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

Puede corregir el error mediante el tipo de module declaración:

targetScope = 'subscription'

param otherSubscriptionID string

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

Pasos siguientes

Para obtener más información sobre los códigos de error y advertencia de Bicep, consulte Diagnósticos principales de Bicep.