Freigeben über


Bicep-Diagnosecode - BCP144

Diese Diagnose tritt auf, wenn Sie versuchen, auf eine Ressourcen- oder Modulauflistung (z. B. eine mithilfe einer for-Schleife definierte) zu verweisen, ohne einen Index anzugeben. Bicep erfordert, dass solche Verweise explizit angeben, auf welche Ressource oder welches Modul in der Auflistung Sie mit einem Arrayindex verweisen.

Description

Ein direkter Verweis auf eine Ressource oder eine Modulsammlung wird hier derzeit nicht unterstützt. Wenden Sie einen Array-Indexer auf den Ausdruck an.

Level

Error

Solutions

Verwenden Sie zum Auflösen von BCP144 einen Arrayindex, um auf jede bestimmte Ressource oder jedes Modul in der Auflistung zuzugreifen. Anstatt die Auflistung direkt zu durchlaufen, durchlaufen Sie das Eingabearray, und verwenden Sie den Index, um auf das entsprechende Element zu verweisen.

Examples

Im folgenden Beispiel wird die Diagnose ausgelöst, da sie auf eine Ressourcenauflistung verweist, ohne einen Index anzugeben.

param names array = [
  'one'
  'two'
]

resource demo 'Microsoft.Storage/storageAccounts@2022-09-01' = [for name in names: {
  name: 'demo${name}'
  location: resourceGroup().location
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
  properties: {}
}]

// ❌ This line triggers BCP144.
output storageNames array = [for r in demo: r.name]

Verwenden Sie zum Auflösen von BCP144 einen Arrayindex, um auf jede bestimmte Ressource in der Auflistung zuzugreifen.

param names array = [
  'one'
  'two'
]

resource demo 'Microsoft.Storage/storageAccounts@2022-09-01' = [for name in names: {
  name: 'demo${name}'
  location: resourceGroup().location
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
  properties: {}
}]

// ✅ Correct usage with indexing.
output storageNames array = [for (name, i) in names: demo[i].name]

Das folgende Beispiel zeigt den Fehlercode mit einer Modulauflistung.

param locations array = [
  'eastus'
  'westus'
]

module storageModule 'storage.bicep' = [for loc in locations: {
  name: 'storage-${loc}'
  params: {
    location: loc
  }
}]

// ❌ This line triggers BCP144.
output moduleOutputs array = [for m in storageModule: m.outputs.storageAccountName]

Verwenden Sie zum Auflösen von BCP144 einen Arrayindex, um auf jedes bestimmte Modul in der Auflistung zuzugreifen.

param locations array = [
  'eastus'
  'westus'
]

module storageModule 'storage.bicep' = [for loc in locations: {
  name: 'storage-${loc}'
  params: {
    location: loc
  }
}]

// ✅ Correct usage with indexing.
output moduleOutputs array = [for (loc, i) in locations: storageModule[i].outputs.storageAccountName]

Next steps

Weitere Informationen zur Bicep-Diagnose finden Sie unter Bicep-Kerndiagnose.