Kod błędu Bicep — BCP139
Ten błąd występuje, gdy używasz resource
metody do wdrażania zasobów w innym zakresie niż docelowy. Zamiast tego należy użyć polecenia module
. Aby uzyskać więcej informacji, zobacz następujące artykuły na podstawie zakresu:
- Grupa zasobów: zakres do innej grupy zasobów.
- Subskrypcja: zakresy wdrażania.
- Grupa zarządzania: zakresy wdrażania.
- Dzierżawa: zakresy wdrażania.
Opis błędu
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.
Rozwiązanie
Aby wdrożyć zasoby w zakresie, który nie jest zakresem module
docelowym, dodaj element .
Przykłady
W poniższym przykładzie wdrożono zasób konta magazynu w innej grupie zasobów w tej samej subskrypcji. Przykład zgłasza błąd, ponieważ module
typ deklaracji nie jest używany:
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'
}
Błąd można naprawić przy użyciu module
typu deklaracji:
param otherResourceGroup string
// module deployed to a different resource group in the same subscription
module exampleModule 'module.bicep' = {
name: 'deployStorageToAnotherRG'
scope: resourceGroup(otherResourceGroup)
}
Poniższy przykład umożliwia wdrożenie grupy zasobów w innej subskrypcji. Przykład zgłasza błąd, ponieważ module
nie jest używany
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'
}
Błąd można naprawić przy użyciu module
typu deklaracji:
targetScope = 'subscription'
param otherSubscriptionID string
// module deployed to a different subscription
module exampleModule 'module.bicep' = {
name: 'deployToDifferentSub'
scope: subscription(otherSubscriptionID)
}
Następne kroki
Aby uzyskać więcej informacji na temat błędów i kodów ostrzeżeń Bicep, zobacz Diagnostyka rdzenia Bicep.