Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ta diagnostyka występuje podczas próby odwołania się do kolekcji zasobów lub modułów (na przykład jednej zdefiniowanej forprzy użyciu pętli -) bez określania indeksu. Bicep wymaga jawnego wskazania, który zasób lub moduł w kolekcji, do której odwołujesz się przy użyciu indeksu tablicy.
Description
Bezpośrednie odwoływanie się do kolekcji zasobów lub modułów nie jest obecnie obsługiwane w tym miejscu. Zastosuj indeksator tablicy do wyrażenia.
Level
Error
Solutions
Aby rozwiązać problem BCP144, użyj indeksu tablicy, aby uzyskać dostęp do poszczególnych zasobów lub modułów w kolekcji. Zamiast bezpośrednio pętli na kolekcji, przejmij pętlę na tablicy wejściowej i użyj indeksu, aby odwołać się do odpowiedniego elementu.
Examples
Poniższy przykład zgłasza diagnostykę, ponieważ odwołuje się do kolekcji zasobów bez określania indeksu.
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]
Aby rozwiązać problem BCP144, użyj indeksu tablicy, aby uzyskać dostęp do poszczególnych zasobów w kolekcji.
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]
Poniższy przykład przedstawia kod błędu z kolekcją modułów.
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]
Aby rozwiązać problem BCP144, użyj indeksu tablicy, aby uzyskać dostęp do poszczególnych modułów w kolekcji.
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
Aby uzyskać więcej informacji na temat diagnostyki Bicep, zobacz Diagnostyka rdzenia Bicep.