Bicep エラー コード - BCP139

このエラーは、 resource を使用して、ターゲットスコープとは異なるスコープにリソースをデプロイするときに発生します。 代わりに、module を使用する必要があります。 詳細については、スコープに基づく次の記事を参照してください。

エラーの説明

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.

解決策

ターゲット スコープではないスコープにリソースをデプロイするには、 moduleを追加します。

次の例では、ストレージ アカウント リソースを同じサブスクリプション内の別のリソース グループにデプロイします。 この例では、 module 宣言型が使用されていないため、エラーが発生します。

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'
}

module宣言型を使用して、エラーを修正できます。

param otherResourceGroup string

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

次の例では、リソース グループを別のサブスクリプションにデプロイします。 この例では、 module が使用されていないため、エラーが発生します

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'
}

module宣言型を使用して、エラーを修正できます。

targetScope = 'subscription'

param otherSubscriptionID string

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

次のステップ

Bicep エラーコードと警告コードの詳細については、「 Bicep コア診断を参照してください。