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:
- Grupo de recursos: ámbito para otro grupo de recursos.
- Suscripción: ámbitos de implementación.
- Grupo de administración: ámbitos de implementación.
- Inquilino: ámbitos de implementación.
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.